Изучая примеры из книжки Рихтера, наткнулся что он процедуру диалогового окна описывает следующим образом:
INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog);
chHANDLE_DLGMSG(hwnd, WM_SIZE, Dlg_OnSize);
chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand);
}
return(FALSE);
}
Подстановка макроса chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand) приведет нас к следующему выражению:
case (WM_COMMAND): return
( SetWindowLongPtr(hwnd, DWLP_MSGRESULT, (LPARAM)(LRESULT)(Dlg_OnCommand(hwnd, (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)),0L), TRUE );
т.е мы возращаем
TRUE
попутно выполняя
Dlg_OnCommand(hwnd, (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam));
и выполняя
SetWindowLongPtr(hwnd, DWLP_MSGRESULT, 0);
собственно стало интересно с какой целью выполняется SetWindowLongPtr? (DWLP_MSGRESULT Устанавливает возвращаемое значение сообщения, обработанного в процедуре диалогового окна)
заменил
chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand);
на
case WM_COMMAND : return (Dlg_OnCommand(hwnd, (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)), TRUE) ;
— никаких изменений в работе программы не заметил
Здравствуйте, meier13, Вы писали:
M>Подстановка макроса chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand) приведет нас к следующему выражению:
M>M>case (WM_COMMAND): return
M> ( SetWindowLongPtr(hwnd, DWLP_MSGRESULT, (LPARAM)(LRESULT)(Dlg_OnCommand(hwnd, (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)),0L), TRUE );
M>
M>собственно стало интересно с какой целью выполняется SetWindowLongPtr? (DWLP_MSGRESULT Устанавливает возвращаемое значение сообщения, обработанного в процедуре диалогового окна)
А вы прикиньте, что бывают не только WM_COMMAND, но и WM_NCHITTEST, WM_CTLCOLORDLG, etc.
Или не понял ваш вопрос?
Здравствуйте, ononim, Вы писали:
O>читаем в MSDN про Return Value: http://msdn.microsoft.com/en-us/library/ms645469(v=vs.85).aspx
Ок спасибо, этот момент я как-то пропустил , да и про-то, что есть сообщения которые хотят возвращаемые значение тоже, так что строго не судите, просто win32 еще только начинаю изучать )))
Здравствуйте, meier13, Вы писали:
M>Ок спасибо, этот момент я как-то пропустил , да и про-то, что есть сообщения которые хотят возвращаемые значение тоже,
Что значит "да и про то"? Это же про одно и то же