Assembler & Win32 [Александр Усов] (fb2) читать постранично, страница - 3

- Assembler & Win32 71 Кб, 19с. скачать: (fb2) - (исправленную)  читать: (полностью) - (постранично) - Александр Усов

 [Настройки текста]  [Cбросить фильтры]

ID_SAVE                    = 9C42

ID_EXIT                    = 9C43


CS_VREDRAW          = 0001

CS_HREDRAW          = 0002

IDI_APPLICATION            = 7F00

IDC_ARROW           = 7F00

COLOR_WINDOW        = 5

WS_EX_WINDOWEDGE    = 00000100

WS_EX_CLIENTEDGE    = 00000200

WS_EX_OVERLAPPEDWINDOW     = WS_EX_WINDOWEDGE OR WS_EX_CLIENTEDGE

WS_OVERLAPPED       = 00000000

WS_CAPTION          = 00C00000

WS_SYSMENU          = 00080000

WS_THICKFRAME       = 00040000

WS_MINIMIZEBOX             = 00020000

WS_MAXIMIZEBOX             = 00010000

WS_OVERLAPPEDWINDOW =      WS_OVERLAPPED     OR \

                           WS_CAPTION        OR \

                           WS_SYSMENU        OR \

                           WS_THICKFRAME     OR \

                           WS_MINIMIZEBOX    OR \

                           WS_MAXIMIZEBOX

CW_USEDEFAULT       = 80000000

SW_SHOW                    = 5

WM_COMMAND          = 0111

WM_DESTROY          = 0002

WM_CLOSE            = 0010

MB_OK               = 0


PROCTYPE     ptGetModuleHandle   stdcall      \

                    lpModuleName :dword


PROCTYPE     ptLoadIcon          stdcall      \

                    hInstance    :dword,      \

                    lpIconName   :dword


PROCTYPE     ptLoadCursor        stdcall      \

                    hInstance    :dword,      \

                    lpCursorName :dword


PROCTYPE     ptLoadMenu          stdcall      \

                    hInstance    :dword,      \

                    lpMenuName   :dword


PROCTYPE     ptRegisterClassEx   stdcall      \

                    lpwcx        :dword


PROCTYPE     ptCreateWindowEx    stdcall      \

                    dwExStyle    :dword,      \

                    lpClassName  :dword,      \

                    lpWindowName :dword,      \

                    dwStyle             :dword,      \

                    x            :dword, \

                    y            :dword,      \

                    nWidth       :dword,      \

                    nHeight             :dword,      \

                    hWndParent   :dword,      \

                    hMenu        :dword, \

                    hInstance    :dword,      \

                    lpParam             :dword


PROCTYPE     ptShowWindow        stdcall      \

                    hWnd         :dword,      \

                    nCmdShow     :dword


PROCTYPE     ptUpdateWindow             stdcall      \

                    hWnd         :dword


PROCTYPE     ptGetMessage        stdcall      \

                    pMsg         :dword,      \

                    hWnd         :dword,      \

                    wMsgFilterMin :dword,      \

                    wMsgFilterMax :dword


PROCTYPE     ptTranslateMessage  stdcall      \

                    lpMsg        :dword


PROCTYPE     ptDispatchMessage   stdcall      \

                    pmsg         :dword


PROCTYPE     ptSetMenu           stdcall      \

                    hWnd         :dword,      \

                    hMenu        :dword


PROCTYPE     ptPostQuitMessage   stdcall      \

                    nExitCode    :dword


PROCTYPE     ptDefWindowProc            stdcall      \

                    hWnd         :dword,      \

                    Msg          :dword,      \

                    wParam       :dword,      \

                    lParam       :dword


PROCTYPE     ptSendMessage       stdcall      \

                    hWnd         :dword,      \

                    Msg          :dword,      \

                    wParam       :dword,      \

                    lParam       :dword


PROCTYPE     ptMessageBox        stdcall      \

                    hWnd         :dword,      \

                    lpText       :dword,      \

                    lpCaption    :dword,      \

                    uType        :dword


PROCTYPE     ptExitProcess       stdcall      \

                    exitCode     :dword


extrn        GetModuleHandleA    :ptGetModuleHandle

extrn        LoadIconA           :ptLoadIcon

extrn        LoadCursorA         :ptLoadCursor

extrn        RegisterClassExA    :ptRegisterClassEx

extrn        LoadMenuA           :ptLoadMenu

extrn        CreateWindowExA            :ptCreateWindowEx

extrn        ShowWindow          :ptShowWindow

extrn        UpdateWindow        :ptUpdateWindow

extrn        GetMessageA         :ptGetMessage

extrn        TranslateMessage    :ptTranslateMessage

extrn        DispatchMessageA    :ptDispatchMessage

extrn        SetMenu                    :ptSetMenu

extrn        PostQuitMessage            :ptPostQuitMessage

extrn         DefWindowProcA             :ptDefWindowProc

extrn        SendMessageA        :ptSendMessage

extrn        MessageBoxA         :ptMessageBox

extrn        ExitProcess         :ptExitProcess


UDataSeg

hInst        dd           ?

hWnd         dd           ?


IFNDEF VER1

hMenu        dd           ?

ENDIF



DataSeg

msg          msgStruc     <>

classTitle   db     'Menu demo', 0

wndTitle     db     'Demo program', 0

msg_open_txt db     'You selected open', 0

msg_open_tlt db     'Open box', 0

msg_save_txt db     'You selected save', 0

msg_save_tlt db     'Save box', 0


CodeSeg

Start: call   GetModuleHandleA,   0      ; не обязательно, но желательно

       mov    [hInst],eax


       sub    esp,SIZE WndClassEx        ; отведём место в стеке под структуру


       mov    [(WndClassEx esp).cbSize],SIZE WndClassEx

       mov    [(WndClassEx esp).style],CS_HREDRAW or CS_VREDRAW