Уроки Iczelion'а




Урок 27. Тултип-контрол - часть 9


sub eax,[esi].top

mov [edi].rect.bottom,eax

.else

mov eax,[esi].right

sub eax,[esi].left

shr eax,1

inc eax

mov [edi].rect.left,eax

mov eax,[esi].bottom

sub eax,[esi].top

shr eax,1

inc eax

mov [edi].rect.top,eax

mov eax,[esi].right

sub eax,[esi].left

mov [edi].rect.right,eax

mov eax,[esi].bottom

sub eax,[esi].top

mov [edi].rect.bottom,eax

.endif

push lpText

pop [edi].lpszText

invoke SendMessage,hwndTool,TTM_ADDTOOL,NULL,lpti

assume edi:nothing

assume esi:nothing

ret

SetDlgToolArea endp

end start

Анализ:

После того, как создано основное диалоговое окно, мы создает тултип-контрол

функцией CreateWindowsEx.

invoke InitCommonControls

invoke CreateWindowEx,NULL,ADDR ToolTipsClassName,NULL,\

TTS_ALWAYSTIp,CW_USEDEFAULT,\

CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\

hInstance,NULL

mov hwndTool,eax

После этого мы переходим к определению четырех tool'ов для каждого угла

диалогового окна.

mov id,0 ; used as the tool ID

mov ti.cbSize,sizeof TOOLINFO

mov ti.uFlags,TTF_SUBCLASS ; tell the tooltip control to subclass the dialog window.

push hDlg

pop ti.hWnd ; handle to the window that contains the tool

invoke GetWindowRect,hDlg,addr rect ; получаем размерность клиентской

; области

invoke SetDlgToolArea,hDlg,addr ti,addr MainDialogText1,id,addr rect

Мы инициализируем члены структуры TOOLINFO. Заметьте, что мы хотит поделить

клиентскую область на 4 tool'а, поэтому нам нужно знать размерность

клиентской области. Это то, для чего мы вызываем GetWindowsRect. Мы не хотим

передавать сообщения мыши тултипу, поэтому мы указываем

флага TIF_SUBCLASS.

SetDlgToolArea - это функция, которая высчитывает координаты прямоугольной

области каждого tool'а и регистрирует tool в тултипе. Я не хочу

вдаваться в

подробности относительно этого, достаточно сказать, что она делит клиентскую

область на 4 области с одними и теми же размерами. Затем она посылает

сообщение TTN_ADDTOOL тултипу, передавая адрес структуры TOOLINFO в

lparam.




Содержание  Назад  Вперед