Я использую следующий код для создания кнопки и изменить его прок:Обработка нажатия кнопки в процедуре кнопки
INT_PTR CALLBACK Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
//switch(LOWORD(wParam))
//switch(HIWORD(wParam))
switch (message)
{
case 200:
case BN_CLICKED:
MessageBox(NULL,NULL,NULL,NULL);
break;
default: return oldproc(hDlg, message, wParam, lParam);
}
return (INT_PTR)FALSE;
}
и
HWND handle = CreateWindowEx(NULL,
L"button",
L"TEXT",
WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON,
50,
50,
500,
500,
hWnd,
(HMENU)200,
hInstance,
nullptr);
oldproc = (WNDPROC)SetWindowLong(handle, GWL_WNDPROC, (LONG)Proc);
Проблема в том, что независимо от того, как я обрабатывать сообщения в Proc не создается почтовый ящик.
Примечание: комментируя последнюю строку и обработку его в оконную процедуру следующим образом:
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case 200:
if(wmEvent == BN_CLICKED)
MessageBox(NULL,NULL,NULL,NULL);
... }
работает нормально, но я не могу использовать это из-за того, как я разработал вещи.
Есть ли способ заставить это работать?
1. опечатка, извините 2. Вы могли бы предоставить пример использования SetWindowsHookEx? – user1233963
Я добавил пример. –