Операционная система Microsoft Windows 3.1 для программиста -том 3


Использование плавающего меню в органе управления EDIT - часть 3


Обратите внимание, что после завершения работы новая функция окна вызывает старую функцию окна. Так как ваше приложение не может вызывать функцию окна непосредственно, мы вызываем старую функцию окна при помощи функции CallWindowProc .

Таким образом, мы сделали то, что нам нужно - новая функция окна обрабатывает сообщение от правой клавиши мыши, выводит плавающее меню и затем вызывает стандартную функцию окна текстового редактора.

Однако для того чтобы вместо стандартной функции окна вызывалась наша, ее необходимо подключить при помощи функции SetWindowLong :

lpfnEditWndProc = (WNDPROC)MakeProcInstance((FARPROC)EditWndProc,hInst); SetWindowLong(hEdit, GWL_WNDPROC, (LONG)lpfnEditWndProc);

Перед вызовом функции мы создаем переходник и сохраняем его адрес в переменной lpfnEditWndProc.

Сразу после возвращения управления из функции SetWindowLong наша новая функция окна включается в работу, пропуская через себя все сообщения, предназначенные для стандартной функции окна редактора текста.

Описанная выше методика обычно используется в тех случаях, когда нужно изменить поведение стандартного органа управления или любого стандартного окна Windows с известным идентификатором (зная который можно "добраться" до функции окна).




Начало  Назад  Вперед