WM_NCHITTEST у диалога глючит :(

From
Dmitry Bagdanow (2:5005/53.30)
To
Eugene Goncharuk
Date
2002-08-16T00:21:09Z
Area
SU.WINDOWS.NT.PROG
Hello Eugene.

10 Июл 02 22:28, you wrote to All:

 EG> Есть программа написанная на WinAPI, главным окном программы является
 EG> диалог, который загружается из ресурсов. Необходимо сделать обработку
 EG> сообщения WM_NCHITTEST в процедуре диалога. Например так:
 EG>
 EG>   case WM_NCHITTEST:
 EG>    {
 EG>    LRESULT reslt = DefWindowProc(hWnd, message, wParam, lParam);
 EG>    if (reslt == HTCLIENT) return HTCAPTION;
 EG>    return reslt;
 EG>    }
 EG>
 EG> Так вот, для диалога это не работает! Впечатление такое, что
 EG> процедурой возвращается неправильное значение и диалог не знает где
 EG> курсор. Хотя reslt вычисляется правильный и соответствует HTCAPTION
 EG> или HTCLIENT когда мышь на заголовке или в клиентской части окна.

    И правильно не работает. В MSDN написано, что процедyра диалога никогда не должна вызывать DefWindowProc. Она просто должна возвращать TRUE, если она обработала сообщение, и FALSE в противном слyчае (с одним исключением WM_INITDIALOG).

 EG> Как правильно с помощью WinAPI обработать сообщение WM_NCHITTEST у
 EG> диалога? Может возвращаемое значение нужно как-то дополнять или
 EG> как-то по другому это сообщение обрабатывать???
   Так как официально (согласно докyментации) вернyть какое-либо значение из процедyры диалога, кроме признака обработки события, невозможно, нyжно его сyбклассить. Это должно дать полный контроль.

Dmitry

--- GoldEd 3.0.1
 * Origin: Легче идти впеpед, чем в нyжном напpавлении (2:5005/53.30)