Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Программа демонстрирующая иерархию окон Windows

rsionEx(LPOSVERSIONINFO lpVersionInformation)
<58> ;        push   offset lpVersionInformation
<59> ;        call   GetVersionExA
<60> ;далее можно вставить код для анализа информации о версии Windows
<61> ;вызов LPTSTR GetCommandLine(VOID) - получить  указатель  на  командную
строку
<62> ;       call   GetCommandLineA  :врегистре еах адрес
<63> ;вызов LPVOID GetEnvironmentStrings (VOID) - получить указатель
 ;на блок с переменными окружения
<64> ;       call   GetEnvironmentStringsA  ;врегистре еах адрес
<65> ;вызов VOIDGetStartupInfo(LPSTARTUPINFO lpStartupInfo)   ;указатель
 ;на структуру STARTUPINFO
<66> ;       push   offset lpStartupInfo
<67> ;       call   GetStartupInfoA
<68> ;вызов HMODULE GetModuleHandleA (LPCTSTR lpModuleName)
<69> push   NULL ;0->GetModuleHandle
<70> call   GetModuleHandleA  ;получить значение базового адреса,
<71> mov    hInst, eax     ;no которому загружен модуль.
<72> ;далее  hInst  будет  использоваться  в  качестве  дескриптора  данного
приложения
<73> ;конец стартового кода
<74> WinMain:
<75>;определить   класс   окна   ATOM    RegisterClassEx(CONST    WNDCLASSEX
*lpWndClassEx),
<76> ;                  где *lpWndClassEx - адрес структуры WndClassEx
<77> ;для начала инициализируем поля структуры WndClassEx
<78> mov    wcl.cbSize,typeWNDCLASSEX   -.размер структуры
 :в wcl.cbCIZE
<79> mov  wcl.style,CS_HREDRAW+CS_VREDRAW
<80> mov    wcl.pfnWndProg,offsetWindowProg  ;адрес оконной  процедуры
<81> mov    wcl.cbCisExtra,0
<82> mov    wcl.cbWndExtra,0
<83> mov    eax,hInst
<84> mov    ;дискриптор приложения в поле hInstance структуры wcl
<85> mov    wcl.hInstance, eax
<86>  ;готовим  вызов   HICON   LoadIcon   (HINSTANCE   hInstance,   LPCTSTR
lpIconName)
<87> push IDI_APPLICATION ,-стандартный значок
<88> push 0 ;NULL
<89> саП LoadIconA
<90> mov wcl.hIcon, eax ,-дескриптор значка в поле hIcon I
;структуры wcl
<91> ;готовим вызов HCURSOR  LoadCursorA  (HINSTANCE  hInstance,  LPCTSTR  M
;lpCursorName)
<92> push IDC_ARROW ,-стандартный курсор - стрелка
<93> push 0
<94> саll LoadCursorA
<95> mov wcl.hCursor,eax ;дескриптор курсора в поле hCursor
;структуры wc1
<96> ;определим цвет фона окна - белый
<97> ;готовим вызов HGDIOBJ GetStockObject(int fnObject)
<98> push WHITE_BRUSH
<99> саП GetStockObject
<100> mov wcl.hbrBackground, eax
<101> mov dword ptrwcl.lpszMenuName, 0 ;без главного меню
<102> mov dwordptrwcl.lpszClassName,offsetszC1assName; имя
;класса окна
<103> mov wcl.hIconSm, 0
<104> ;регистрируем класс окна - готовим вызов RegisterClassExA  (&wndclass)

<105> push offset wcl
<106> саП RegisterClassExA
<107> test ax, ах;проверить на успех регистрации класса окна
<108> jz end_cyc1_msg ;неудача
<109> ;создаем окно:
<110> ;готовим вызовHWND CreateWindowExA(DWORDdwExStyle,
 LPCTSTR1pClassName,
<111> ; LPCTSTR 1pW1ndowName, DWORD dwStyle, int x, int у, int nWidth,
             |;int nHeight,
<112> ;  HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID
             ;lpParam)
<113>     push   0   ;lpParam
<114>     push   hInst ;hInstance
<115>     push   NULL ;menu
<116>      push   NULL ;parent hwnd
<117>      push   CW_USEDEFAULT    ;высота окна
<118>      push   CW_USEDEFAULT    ;ширина окна
<119>       push   CW_USEDEFAULT    ;координата у левого верхнего угла
           ;окна
<120>       push   CW_USEDEFAULT    ;координата х левого верхнего угла
<121>       push   WS_OVERLAPPEDWINDOW    ;стиль окна
<122>       push   offset szTitleName ;строка заголовка окна
<123>       push   offset szClassName ;имя класса окна
<124>       push   NULL
<125>      саll   CreateWindowExA
<126>       mov    hwnd,eax  ;-дескриптор окна
<127>       ;показать окно:
<128>        ;готовим вызов BOOL ShowWindow( HWND hWnd, int nCmdShow )
<129> push   SW_SHOWNORMAL
<130> push         hwnd
<131> call         ShowWindow
<132> ;перерисовываем содержимое окна
<133> ;готовим вызов BOOL UpdateWindow( HWND hWnd )
<134> push         hwnd
<135> call          UpdateWindow
<136> ;запускаем цикл сообщений:
<137> ;готовим вызов BOOL GetMessageA( LPMSG lpMsg, HWND hWnd,
<138> ;                     UINTwMsgFilterMin,UINTwMsgFilterMax)
<139> cycl_msg:
<140> push         0
<141> push         0
<142> push         NULL
<143> push         offset message
<144> cal 1         GetMessageA
<145> cmp           ах, 0
<146> je            end_cycl_msg
<147> ;трансляция ввода с клавиатуры
<148> ;готовим вызов BOOL Trans1ateMessage( CONST MSG *lpMsg )
<149> push         offset message
<150> call         TranslateMessage
<151> ;отправим сообщение оконной процедуре
<152> ;готовим вызов LONG D1spatchMessage( CONST MSG *lpmsg )
<153> push          offset message
<154> call          DispatchMessageA
<155> jmp           cycl_msg
<156> end_cycl_msg:
<157>
<158> ;выход из приложения
<159> ;готовим вызов VOID ExitProcess( UINT uExitCode )
<160> push         NULL
<161> call          ExitProcess
<162> start            endp
<163> ; - - - - -  - - - - - - - --WindowProc-- - - - -  - - - - - - -  -  -
- - - - - - - - - - - - - - - - - - - - - - -
<164> WindowProc    proc
<165> argP0nwnd:DWORD, PPmes:DWORD, @@wparam:DWORD, @@lparam:DWORD
<166>  uses  ebx,  edi,  es1          ;эти   регистры   обязательно   должны
сохраняться
<167> local              @@hdc:DWORD
<168> cmp           @@mes, WM_DESTROY
<169> je            wmdestroy
<170> cmp           @@mes, WM_CREATE
<171> je            wmcreate
<172> cmp           @@mes, WM_PAINT
<173> je            wmpaint
<174> jmp           default
<175> wmcreate:
<176> ;обозначим создание окна звуковым эффектом
<177> ;готовим вызов функции BOOL PlaySound(LPCSTR pszSound,  HMODULE  hmod,
DWORD
 ;fdwSound     )
<178> push          SND_SYNC+SND_FILENAME
<179> push         NULL
<180> push         offset playFileCreate
<181>        call   PlaySoundA
<182>         mov    eax, О;возвращаемое значение - 0
<183>         jmp    exit_wndproc
<184> wmpaint:
<185>         push   SND_SYNC+SND_FILENAME
<186>         push   NULL
<187>         push   offset playFIilePaint
<188>         call P1aySoundA
<189>;получим      контекст       устройства       HDC       BeginPaint(HWND
nwnd,LPPAINTSTRUCT;LPpAINT)
<190>         push   offset ps
<191>         push   @@hwnd
<192>         call BeginPaint
<193>         mov @@hdc,eax
<194> ;выведем строку текста в окно BOOL TextOut( HDC hdc. int nXStart, int
:nYStart.
<195> ;       LPCTSTR lpString, int cbString )
<196>         push   MesWindowLen
<197>         push   offset MesWindow
<198>         push   100
<199>         push   10
<200>         push   @@hdc
<201>         call   TextOutA
<202>  :ocвoбoдитькoнтeкcтBOOLEndPaint(   HWNDhWnd,   CONSTPAINTSTRUCT*lpPai
<203>         push   offset ps
<204>         push   @@hdc
<205>         call   EndPaint
<206>         mov    еах,0;возвращаемое значение-0
 <207>         jmp    exit_wndproc
 <208> wmdestroy:
<209>         push   SND_SYNC+SND_FILENAME
<210>         push   NULL
 <211>         push   offset playFileDestroy
<212>         call   PlaySoundA
<213> ;послать сообщение WМ_QUIТ
<214> ;готовим вызов VOID PostQuitMessage( int nExitCode )
<215>         push   0
<216>         call   PostQuitMessage
<217>         mov    eax, О;возвращаемое значение - 0
<218>         jmp    exit_wndproc
<219> default:
<220> ; обработка по умолчанию
<221>;готовим вызов LRESULTDefWindowProc( HWND hWnd, UINTMsg,
<222> ;        WPARAMwParam,LPARAMlParam)
<223>         push   @@lparam
 <224>         push   @@wparam
<225>         push   @@mes
<226>         push   @@nwnd
 <227>         call    DefWindowProcA
 <228>         jmp exit_wndproc
<229> ;...  ...  ...
<230> exit_wndproc:
<231> ret
<232> WindowProc    endp
<233> end                start

                               3.Иерархия окон

      Изучив по дисциплине  «Системное  программное  обеспечение»  написание
окон Windows на языке Assembler и рассматривая  графическую оконную  систему
нельзя  обойтись  без  подробного  рассмотрения   того,  какие  окна   можно
отображать на экране.
Тип  окна  задается  32-битовым  без   знаковым    целым   числом,   которое
указывается третьим параметром вызова функции Create Window.
      Существует всего лишь три основных типа окон Window.
1 тип. Перекрывающиеся окна. Флаг WS_OVERLAPPED.
2 тип. Вспомогательные окна. Флаг WS_POPUP.
3 тип. Дочерние окна. . Флаг WS_CHILD.
      Для  написания  курсового  проекта,  который  имеет  тему  «Программа
демонстрирующая иерархию окон Windows» были  использованы  именно  эти  типы
окон.
      Нужно о них помнить следующее что:
         . Перекрывающееся окно никогда не имеет родителя
         . Дочернее окно всегда имеет родителя.
         . Вспомогательное окно может иметь и не иметь родителя;  если  оно
           имеет родителя, то все равно это не дочернее
1234
скачать работу

Программа демонстрирующая иерархию окон Windows

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ