Уроки Iczelion'а


         

Wndproc proc uses ebx edi


WinMain endp
Wndproc proc uses ebx edi hWnd:HWND, uMsg:UINT, wparam:WpARAM,
lparam:LpARAM LOCAL wc:WNDCLASSEX .if uMsg==WM_CREATE mov wc.cbSize,sizeof WNDCLASSEX
invoke GetClassInfoEx,NULL,addr EditClass,addr wc push wc.lpfnWndproc pop OldWndproc mov wc.lpfnWndproc, OFFSET EditWndproc
push hInstance pop wc.hInstance mov wc.lpszClassName,OFFSET OurClass invoke RegisterClassEx, addr wc
xor ebx,ebx mov edi,20 .while ebx<6 invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR OurClass,NULL,\ WS_CHILD+WS_VISIBLE+WS_BORDER,20,\ edi,300,25,hWnd,ebx,\ hInstance,NULL mov dword ptr [hwndEdit+4*ebx],eax
add edi,25 inc ebx .endw invoke SetFocus,hwndEdit
.elseif uMsg==WM_DESTROY invoke postQuitMessage,NULL .else invoke DefWindowproc,hWnd,uMsg,wparam,lparam
ret .endif xor eax,eax ret
Wndproc endp
EditWndproc pROC hEdit:DWORD,uMsg:DWORD,wparam:DWORD,lparam:DWORD
.if uMsg==WM_CHAR mov eax,wparam .if (al>="0" && al<="9") || (al>="A" && al<="F") || (al>="a" && al<="f") || al==VK_BACK
.if al>="a" && al<="f" sub al,20h .endif invoke CallWindowproc,OldWndproc,hEdit,uMsg,eax,lparam
ret .endif .elseif uMsg==WM_KEYDOWN mov eax,wparam
.if al==VK_RETURN invoke MessageBox,hEdit,addr Message,addr AppName,MB_OK+MB_ICONINFORMATION invoke SetFocus,hEdit
.elseif al==VK_TAB invoke GetKeyState,VK_SHIFT test eax,80000000 .if ZERO?
invoke GetWindow,hEdit,GW_HWNDNEXT .if eax==NULL invoke GetWindow,hEdit,GW_HWNDFIRST .endif
.else invoke GetWindow,hEdit,GW_HWNDpREV .if eax==NULL invoke GetWindow,hEdit,GW_HWNDLAST
.endif .endif invoke SetFocus,eax xor eax,eax
ret .else invoke CallWindowproc,OldWndproc,hEdit,uMsg,wparam,lparam ret
.endif .else invoke CallWindowproc,OldWndproc,hEdit,uMsg,wparam,lparam ret
.endif xor eax,eax ret EditWndproc endp
end start
Анализ:
Программа создаст простое окно с "измененными" edit control'ами в своей клиентской области. Edit control'ы будут принимать только шестнадцатиричные числа. Фактически, я адаптировал пример с сабклассингом. программа стартует как обычно, а самое интересное происходит, когда создается основное окно:

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





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