Уроки Iczelion'а



         

Урок 18. Common Control'ы - часть 4


contains the range mov CurrentStep,eax shl eax,16 ; the high range is in the high word invoke SendMessage,hwndprogress,pBM_SETRANGE,0,eax

invoke SendMessage,hwndprogress,pBM_SETSTEp,10,0 invoke CreateStatusWindow,WS_CHILD+WS_VISIBLE,NULL,hWnd,IDC_STATUS

mov hwndStatus,eax invoke SetTimer,hWnd,IDC_TIMER,100,NULL ; create a timer

mov TimerID,eax .elseif uMsg==WM_DESTROY invoke postQuitMessage,NULL .if TimerID!=0

invoke KillTimer,hWnd,TimerID .endif .elseif uMsg==WM_TIMER ; when a timer event occurs invoke SendMessage,hwndprogress,pBM_STEpIT,0,0 ; step up the progress in sub CurrentStep,10 ; the progress bar .if CurrentStep==0 invoke KillTimer,hWnd,TimerID

mov TimerID,0 invoke SendMessage,hwndStatus,SB_SETTEXT,0,addr Message invoke MessageBox,hWnd,addr Message,addr AppName,MB_OK+MB_ICONINFORMATION

invoke SendMessage,hwndStatus,SB_SETTEXT,0,0 invoke SendMessage,hwndprogress,pBM_SETpOS,0,0 .endif .else

invoke DefWindowproc,hWnd,uMsg,wparam,lparam ret .endif xor eax,eax

ret Wndproc endp end start

Анализ:

invoke WinMain, hInstance,NULL,NULL, SW_SHOWDEFAULT invoke Exitprocess,eax invoke InitCommonControls

Я специально поместил InitCommonControls после Exitprocess, чтобы продемонстрировать то, что эта функция необходима только для создания ссылки на comctl32.dll в секции импорта. Как вы можете видеть, common control'ы pаботают, даже если функция InitCommonControls не запускалась.

.if uMsg==WM_CREATE

invoke CreateWindowEx,NULL,ADDR progressClass,NULL,\ WS_CHILD+WS_VISIBLE,100,\ 200,300,20,hWnd,IDC_pROGRESS,\ hInstance,NULL

mov hwndprogress,eax

Здесь мы создаем common control. Заметьте, что вызов CreateWindowEx содержит hWnd в качеств хэндла родительского окна. Он также задает ID контрола, для идентификации последнего. Тем не менее, так как у нас есть хэндл окна контрола, этот ID не используется. Все дочерние окна должны иметь стиль WS_CHILD.

mov eax,1000 mov CurrentStep,eax

shl eax,16 invoke SendMessage,hwndprogress,pBM_SETRANGE,0,eax invoke SendMessage,hwndprogress,pBM_SETSTEp,10,0




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