![]() |
|
|
![]()
|
|
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
возможно ли сделать edit control посреди тулбара?
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Да, можно, с помощью доводки напильником.
Примерно так: после загрузки панели нужно добавить в панель сепаратор нужной ширины (чтобы место для контрола было). Потом на месте сепаратор создать дочернее окно-редактор или комбобокс или еще что. Я подробностей не помню, так что поищи пример в MSDN, должен быть. -------------------- ... |
|||
|
||||
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
сделал через CMFCToolBarEditBoxButton и ::OnToolbarReset.
(как в примере ToolbarDateTimePicker) но вот проблема, хочу чтобы при нажатии ентер считывалось значение с эдит контрола и выполнялась функция, пробовал через наследование и перегрузку PreTranslateMessage. как в примере
непонятно как правильно отнаследовать. Это сообщение отредактировал(а) mrgloom - 25.11.2011, 12:38 |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
"Не работает" и "не компилируется" - это 2 большие разницы!
И какого, спрашивается, оно должно компилироваться, если у CEnterCEdit действительно нет конструктора с 4 аргументами? В общем, по С++ тебе 2 с плюсом. Далее, чтобы получить поведение, какое ты хочешь, совсем не нужно делать свой контрол. Более того, боюсь, это не поможет, т.к. Enter будет, скорее всего, перехвачено раньше. Это действительно нужно делать в PreTranslateMessage. Что же у тебя не получается? -------------------- ... |
|||
|
||||
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
у меня есть главный класс который собсвенно тулбар и создает.
как я понял PreTranslateMessage я должен делать именно у моего класса контрола, а не у главного класса. а чтобы это сделать я должен сделать новый класс унаследовать от MFCToolBarEditBoxButton и перегрузить эту вирутальную ф-ию, так работает
я наследую свой класс CEnterCEdit от CMFCToolBarEditBoxButton и по идее должен работать конструктор базвого класса если он не перегружен. Это сообщение отредактировал(а) mrgloom - 25.11.2011, 12:59 |
||||
|
|||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
хмм по дефолту вроде берется только пустой конструктор от родительского класса, пробовал так пишет много ошибок. |
|||
|
||||
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
вроде заработало
но в PreTranslateMessage после нажатия клавиши я не попадаю почему то, в чем может быть проблема? Это сообщение отредактировал(а) mrgloom - 25.11.2011, 13:55 |
||||
|
|||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
да уж я в 2-х местах ошибся.
но теперь все работает. надо было так
не работает только закоментированая строчка error C2679: binary '==' : no operator found which takes a right-hand operand of type 'CEnterCEdit' (or there is no acceptable conversion. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
В PreTranslate контрола ты не попадаешь, т.к. перехват делается раньше. Я обычно делаю свой класс тулбара, это удобнее в смысле инкапсуляции. Можно и на MainFrame, как ты сделал, но это не кошерно в том же смысле - представь, что приложениее разрастется, не надо перегружать главное окно.
Не компилируется у тебе, скорее всего, потому, что GetFocus возвращает CWnd*, а m_EditControl, скорее всего, не указатель. Если хочешь использовать глобальную ф-ю GetFocus, которая возвращает HWND, пиши ::GetFocus -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |