Как создать обычное Окно

Тема в разделе "WASM.BEGINNERS", создана пользователем Eksell, 26 апр 2006.

  1. Eksell

    Eksell New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    1
    Я совсем недавно начал изучать Assembler (masm32) и у меня есть небольшой вопрос. Подскажите пожалуйста уважаемые программеры как создать обычное окно (без всяких кнопок, и прочего...) на assembler'е? Я использую компилятор masm32 8.2. Дайте пример.

    Спасибо заранее!
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.351
    Щас тебе дадут пример... :)
     
  3. Guest

    Guest Guest

    Публикаций:
    0
    В папке examples пакета masm32 находится множество примеров.

    Также смотри туториалы икзелиона
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.351
  5. LOL

    LOL New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2006
    Сообщения:
    175
    Адрес:
    Russia
    Если внимательно посмотришьв папке masm32 (и подпапках), то найдешь нижеприведенный код =)


    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\user32.inc
    6. include \masm32\include\kernel32.inc
    7. includelib \masm32\lib\user32.lib
    8. includelib \masm32\lib\kernel32.lib
    9.  
    10. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
    11.  
    12. .data
    13. ClassName db "SimpleWinClass",0
    14. AppName  db "Our First Window",0
    15.  
    16. .data?
    17. hInstance HINSTANCE ?
    18. CommandLine LPSTR ?
    19. .code
    20. start:
    21.     invoke GetModuleHandle, NULL
    22.     mov    hInstance,eax
    23.     invoke GetCommandLine
    24.     mov    CommandLine,eax
    25.     invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    26.     invoke ExitProcess,eax
    27.  
    28. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    29.     LOCAL wc:WNDCLASSEX
    30.     LOCAL msg:MSG
    31.     LOCAL hwnd:HWND
    32.     mov   wc.cbSize,SIZEOF WNDCLASSEX
    33.     mov   wc.style, CS_HREDRAW or CS_VREDRAW
    34.     mov   wc.lpfnWndProc, OFFSET WndProc
    35.     mov   wc.cbClsExtra,NULL
    36.     mov   wc.cbWndExtra,NULL
    37.     push  hInstance
    38.     pop   wc.hInstance
    39.     mov   wc.hbrBackground,COLOR_WINDOW+1
    40.     mov   wc.lpszMenuName,NULL
    41.     mov   wc.lpszClassName,OFFSET ClassName
    42.     invoke LoadIcon,NULL,IDI_APPLICATION
    43.     mov   wc.hIcon,eax
    44.     mov   wc.hIconSm,eax
    45.     invoke LoadCursor,NULL,IDC_ARROW
    46.     mov   wc.hCursor,eax
    47.     invoke RegisterClassEx, addr wc
    48.     INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
    49.            WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
    50.            CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
    51.            hInst,NULL
    52.     mov   hwnd,eax
    53.     invoke ShowWindow, hwnd,SW_SHOWNORMAL
    54.     invoke UpdateWindow, hwnd
    55.     .WHILE TRUE
    56.         invoke GetMessage, ADDR msg,NULL,0,0
    57.         .BREAK .IF (!eax)
    58.         invoke TranslateMessage, ADDR msg
    59.         invoke DispatchMessage, ADDR msg
    60.     .ENDW
    61.     mov     eax,msg.wParam
    62.     ret
    63. WinMain endp
    64.  
    65. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    66.     .IF uMsg==WM_DESTROY
    67.         invoke PostQuitMessage,NULL
    68.     .ELSE
    69.         invoke DefWindowProc,hWnd,uMsg,wParam,lParam       
    70.         ret
    71.     .ENDIF
    72.     xor eax,eax
    73.     ret
    74. WndProc endp
    75. end start