Перехват сообщения WM_KEYDOWN от Edit в модальном диалоге(+)
От: Mиша  
Дата: 24.10.02 12:35
Оценка:
Надо перехватывать нажатия на клавиши CEdit'a в классе диалога.
Как мне перехватить их и не дать обрабатывать CEdit'y? Кто сталкивался?
Подскажите, пожалуйста.
Re: Перехват сообщения WM_KEYDOWN от Edit в модальном диалог
От: Алекс Россия http://wise-orm.com
Дата: 24.10.02 13:36
Оценка:
Здравствуйте Mиша, Вы писали:

M>Надо перехватывать нажатия на клавиши CEdit'a в классе диалога.

M>Как мне перехватить их и не дать обрабатывать CEdit'y? Кто сталкивался?
M>Подскажите, пожалуйста.

Ищи по ключевому слову subclass[ing] или сабклассинг.
Re[2]: Перехват сообщения WM_KEYDOWN от Edit в модальном диа
От: kmn Украина  
Дата: 24.10.02 14:40
Оценка:
Здравствуйте Алекс, Вы писали:

А>Здравствуйте Mиша, Вы писали:


M>>Надо перехватывать нажатия на клавиши CEdit'a в классе диалога.

M>>Как мне перехватить их и не дать обрабатывать CEdit'y? Кто сталкивался?
M>>Подскажите, пожалуйста.

А>Ищи по ключевому слову subclass[ing] или сабклассинг.


Обработка сообщений в Диалоговом окне производится по другому

while(::GetMessage(...))
{
if (::IsDialogMessage(m_hWnd, &msg)) // Вот здесь и начинаются все приколы
continue;

::TraslateMessage(...);
::DistpatchMessage(...);

}

IsDialogMessage преобразует WM_KEYDOWN --> WM_CHAR для "печатных" символов итд...
Re: Перехват сообщения WM_KEYDOWN от Edit в модальном диалог
От: Al-Ko  
Дата: 24.10.02 15:48
Оценка:
Здравствуйте Mиша, Вы писали:

M>Надо перехватывать нажатия на клавиши CEdit'a в классе диалога.

M>Как мне перехватить их и не дать обрабатывать CEdit'y? Кто сталкивался?
M>Подскажите, пожалуйста.

это можно сделать, по крайней мере, тремя способами:

1) перехватив оконную процедуру контрола и обрабатывая WM_KEYDOWN
GetDlgItem, Get/SetWindowLong

2) ловить нотификационные события от контрола EN_CHANGE или EN_UPDATE
COMMAND_HANDLER(IDC_MYEDIT, EN_UPDATE, OnMyeditupdate)


3) в методе PreTranslateMessage класса диалога, проверять, адресовано ли очередное сообщение контролу, и если оно WM_KEYDOWN — не позволять отправлять его контролу, а обрабатывать самостоятельно.
Старый глюк лучше новых двух!
Re[2]: Перехват сообщения WM_KEYDOWN от Edit в модальном диа
От: Аноним  
Дата: 24.10.02 15:57
Оценка:
Здравствуйте Al-Ko, Вы писали:

AK>3) в методе PreTranslateMessage класса диалога, проверять, адресовано ли очередное сообщение контролу, и если оно WM_KEYDOWN — не позволять отправлять его контролу, а обрабатывать самостоятельно.

У диалога нет PreTranslateMessage. Где его взять?
Re[3]: Перехват сообщения WM_KEYDOWN от Edit в модальном диа
От: Al-Ko  
Дата: 25.10.02 09:42
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Al-Ko, Вы писали:


AK>>3) в методе PreTranslateMessage класса диалога, проверять, адресовано ли очередное сообщение контролу, и если оно WM_KEYDOWN — не позволять отправлять его контролу, а обрабатывать самостоятельно.

А>У диалога нет PreTranslateMessage. Где его взять?

А>

какой класс у данного диалога?
Старый глюк лучше новых двух!
Re[4]: Перехват сообщения WM_KEYDOWN от Edit в модальном диа
От: Аноним  
Дата: 25.10.02 10:00
Оценка:
AK>какой класс у данного диалога?
class SomeDlg
: public CDialogImpl<OpenSchemeDlg>,
public CWinDataExchange<OpenSchemeDlg>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.