Учебное пособие: Подклассы окон

Вообще нам может понадобиться порождать подкласс и от модального диалога. В этом случае подмену процедуры обработки сообщений лучше производить в функции диалога при обработке сообщения WM_INITDIALOG:

FARPROC lpfnOwnProc;

LONG PASCAL FAR _export OwnDlgProc(

HWND hWnd, UINT wMsg, UINT wPar, LONG lPar

) {

// см. выше

}

FARPROC lpfnDlgProc;

BOOL PASCAL FAR _export DlgProc(

HWND hWnd, UINT wMsg, UINT wPar, LONG lPar

) {

switch ( wMsg ) {

case WM_INITDIALOG:

/*

установить новую оконную процедуру и запретить вызов

данной функции диалога:

*/

SetWindowLong( hWnd, GWL_WNDPROC, (LONG)lpfnOwnProc );

SetWindowLong( hWnd, DWL_DLGPROC, (LONG)NULL );

/*

если мы устанавливаем новую функцию при обработке сообщения

WM_INITDIALOG, то наша новая функция его уже не получит. Поэтому нам

надо послать какое-либо специальное сообщение или вызвать отдельную

функцию для первоначальной ?

К-во Просмотров: 592
Бесплатно скачать Учебное пособие: Подклассы окон