92978b58

Сообщение WM_CREATE


В процессе создания окна приложения начальные координаты движков, хранящиеся в переменных nXScrollPos и nYScrollPos, устанавливаются в нулевое значение. Это соответствует начальному положению движков, в которое они устанавливаются при создании этих полос просмотра.

Начальные координаты для вывода текста в окне Client Window устанавливаются следующим образом:

cyCurrentPosition = cyClient; cxCurrentPosition = nXScrollPos * cxChar + cxChar;

Так как начальная координата по оси Y устанавливается равной высоте окна, вывод текста начнется в верхней части экрана. Начальная позиция по оси X устанавливается равной средней ширине символа выбранного шрифта, поэтому первый символ первой строки текста будет нарисован в верхнем левом углу экрана с небольшим отступом слева.

Далее обработчик сообщения WM_CREATE определяет идентификаторы окон полос просмотра, сохраняя их в глобальных переменных hwndYScroll и hwndXScroll. Для определения этих идентификаторов используется функция WinWindowFromID.

Так как через первый параметр этой функции необходимо передать идентификатор окна, которое является родительским для полос просмотра, мы получаем идентификатор родительского окна при помощи функции WinQueryWindow. В качестве первого параметра этой функции передается идентификатор окна Client Window, а в качестве второго - константу QW_PARENT. Так как окно Client Window и окна полос просмотра имеют одно и то же родительское окно, функция WinQueryWindow вернет нужный идентификатор окна, который можно передать функции WinWindowFromID.

На следующем этапе обработчик сообщения WM_CREATE, пользуясь полученными идентификаторами окон полос просмотра, устанавливает начальное положение движка и диапазон изменения значений полос просмотра. Для этого окнам полос просмотра передается сообщение SBM_SETSCROLLBAR:

WinSendMsg(hwndYScroll, SBM_SETSCROLLBAR, (MPARAM)0, MPFROM2SHORT(0, YSIZE)); WinSendMsg(hwndXScroll, SBM_SETSCROLLBAR, (MPARAM)0, MPFROM2SHORT(0, XSIZE));




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