отдельная процедура обработки кнопки, как это сделать

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: отдельная процедура обработки кнопки, как это сделать

Eugie » 05 июл 2004, 18:56

Насчет WM_COMMAND все верно, но главная ошибка - что за MainWndProc вызывается в перегруженной процедуре окна? Обычно при window procedure superclassing необрабатывемые сообщения посылаются в старую процедуру окна. А для этого ее надо было сохранить сразу после вызова GetClassInfo.

Кроме того, для дочерних окон не нужно вызывать ShowWindow и UpdateWindow - родитель обо всем позаботится :) Но это уже мелочи

Hawk » 05 июл 2004, 07:58

Aik совершенно прав, нотификации посылаются паренту контролса. Кроме того стандартную процедуру надо вызывать через CallWindowProc

AiK » 04 июл 2004, 19:12

toshas, а ты уверен, что сообщение WM_COMMAND отправляется контролу, а не его родителю?
Я так думаю, тебе BN_CLICKED ловить надо.

отдельная процедура обработки кнопки, как это сделать

toshas » 04 июл 2004, 18:10

есть окно, в нем я создаю кнопку, класс которой беру как стандартный, через GetClassInfo,+изменяю lpfnWndProc и название класса, регистрирую мой класс, но ничего не работает что я делаю не так.

спасибо.

....
LONG WINAPI MainButProc(HWND,UINT,WPARAM,LPARAM);
....
WNDCLASS ww;


GetClassInfo(0,"button",&ww);

ww.lpszClassName="my_button";
ww.lpfnWndProc=MainButProc;
RegisterClass(&ww);

hbutton=CreateWindow("my_button","êíîïêà",WS_CHILD|WS_BORDER|WS_VISIBLE,10,10,100,100,hwnd,(HMENU) 1, hInstance,NULL);
ShowWindow(hbutton,nCmdShow);
UpdateWindow(hbutton);
....
LONG WINAPI MainButProc(HWND hwndMain, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg){
case WM_COMMAND:
MessageBox(hwndMain,"êíîïêó íàæàëè","MessageBox",NULL);
break;
default:
return MainWndProc(hwndMain,uMsg,wParam,lParam);
}
return 0;
}

Вернуться к началу