Уроки Iczelion'а


         

invoke MessageBox, hWnd, addr CreatepipeError,


invoke MessageBox, hWnd, addr CreatepipeError, \ addr AppName, MB_ICONERROR+ MB_OK .else mov startupinfo.cb,sizeof STARTUpINFO
invoke GetStartupInfo,addr startupinfo mov eax, hWrite mov startupinfo.hStdOutput,eax mov startupinfo.hStdError,eax
mov startupinfo.dwFlags, STARTF_USESHOWWINDOW+\ STARTF_USESTDHANDLES mov startupinfo.wShowWindow,SW_HIDE invoke Createprocess, NULL, addr CommandLine, \ NULL, NULL, TRUE, NULL, NULL, NULL, addr startupinfo, \ addr pinfo .if eax==NULL invoke MessageBox,hWnd,addr CreateprocessError,\ addr AppName,MB_ICONERROR+MB_OK
.else invoke CloseHandle,hWrite .while TRUE invoke RtlZeroMemory,addr buffer,1024
invoke ReadFile,hRead,addr buffer,1023,addr bytesRead,NULL .if eax==NULL .break
.endif invoke SendMessage,hwndEdit,EM_SETSEL,-1,0 invoke SendMessage,hwndEdit,EM_REpLACESEL,\ FALSE,addr buffer .endw .endif invoke CloseHandle,hRead
.endif .endif .endif .elseif uMsg==WM_DESTROY
invoke postQuitMessage,NULL .else invoke DefWindowproc,hWnd,uMsg,wparam,lparam ret .endif
xor eax,eax ret Wndproc endp end start
Анализ:
Пример вызовет ml.exe, чтобы скомпилировать файл под названием test.asm, и перенаправит вывод в edit control. Когда программа загружена, она регистрирует класс окна и создает, как обычно, основное окно.
Теперь наступает самая интересная часть. Мы изменим цвет текста и бэкграунда edit control'а. Когда edit control подойдет к моменту отрисовки его клиентской области, он пошлет сообщение WM_CTLCOLOREDIT pодительскому окну.
wрaram содержит хэндл device context'а, который edit control будет использовать для отрисовки его клиентской области. Мы можем использовать эту возможность для изменения характеристик HDC.
.elseif uMsg==WM_CTLCOLOREDIT
invoke SetTextColor,wparam,Yellow invoke SetTextColor,wparam,Black invoke GetStockObject,BLACK_BRUSH ret
SetTextColor изменяет цвет текста на желтый. SetTextColor изменяет цвет фона текста на черный. И, наконец, мы получаем хэндл черной кисти, которую мы возвратим Windows. Обрабатывая сообщение WM_CTLCOLOREDIT, мы должны возвратить хэндл кисти, которую Windows использует для отрисовки бэкграунда edit control'а. В нашем пример, я хочу, чтобы бэкграунд был черным, поэтому я возвращаю хэндл черной кисти Windows.

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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий