![]() |
|
|
![]()
|
|
| 17dufa |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Добрый день.
По определенному условию мне нужно все контролы на окне задисаблить, кроме кнопки выхода. делаю так:
Все работает, но для CEdit хотелось бы не Enable(FALSE), а SetReadOnly(TRUE). Соответственно в функции DisableWindow надо как-то различить чем же на самом деле является hwnd. попробовал так:
не работает. То есть static_cast<CEdit*>(pWnd)->SetReadOnly(TRUE); вызывается, но edit все равно в результате оказываются Disable. |
||||
|
|||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Попробуй так. МФЦ не надежная штука! -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Andrey44, стреляет. спасибо. а можно что-нить подобное сделать с комбобоксами? чтоб стрелочка вниз была задисайблена, а текст выглядел как у ReadOnly едита?
и еще один вопрос, GroupBox притворяется Button'ом, как его разоблачить? дисайблить групбоксы и статики тож некошерно. Это сообщение отредактировал(а) 17dufa - 26.11.2009, 12:48 |
|||
|
||||
| Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Это сообщение отредактировал(а) Andrey44 - 26.11.2009, 13:01 -------------------- ????? ??, ??????? ?????. |
||||
|
|||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Andrey44, не получается, hcombo и hedit но нулям.
интереснее вопрос с групбоксом. почему он в качестве класса указывает Button и как его отличить от реального Button. |
|||
|
||||
| Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Да, посмотрел, это только для ComboBoxEx32 Добавлено через 5 минут и 47 секунд
По стилям, у гроупбокса стиль
Добавлено через 7 минут и 12 секунд Таким образом получаем стили кнопки GetWindowLong(...............) проверяем стоит ли такой стиль и действуем соответственно -------------------- ????? ??, ??????? ?????. |
||||
|
|||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
нашел вот такую функцию:
GetComboBoxInfo но и она возвращает HWND едита нулевым, хотя HWND самого комбо и списка достаточно осмысленные возвращает. Так как перехитрить GroupBox? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Причем тут MFC, если человек глупость делает... Проверить стиль. Групбокс - это действительно кнопка, но со стилем BS_GROUPBOX. Кроме того, тип поля лучше узнавать, посылая полю WM_GETDLGCODE. Поскольку стоит только сделать на основе стандартного эдита свой класс, с небольшими добавками, так сразу твой код проверки класса работать не будет. Эта тема уже обсуждалась где-то в АПИ-форуме, поищи. Добавлено через 1 минуту и 50 секунд
Не у всякого комбобокса есть эдит, а только у DROPDOWN. Кроме прочего, едит проще достать и как первого чайлда комбобокса (GetWindow), ибо ф-я GetComboBoxInfo не на всех виндоусах работает. -------------------- ... |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Earnest,
да, мои комбо DROPLIST. и наскока я понял рантайм поменять стиль комбо - это надо комбо пересоздать. пусть будут Disable. с WM_GETDLGCODE не до конца понятно. в мсдн есть DLGC_BUTTON, DLGC_STATIC, а вот для едита какой будет код возврата? DLGC_WANTALLKEYS? а я едит ни с кем не перепутаю в таком подходе? еще у мя MaskEdit используется. я его сейчас так отлавливаю: !strcmp(className, _T("MSMaskWnd")). Если на WM_GETDLGCODE перейти, то как MaskEdit отловить? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Для определения эдита лучше использовать код DLGC_HASSETSEL; WANTKEYS действительно многие могут использовать, а HASSETSEL означает, что контрол принимает сообщение EM_SETSEL. Т.е. это Edit, RichEdit и все их производные.
-------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |