Iczelion's tutorials

Тема в разделе "WASM.WIN32", создана пользователем paramonov, 17 ноя 2008.

  1. paramonov

    paramonov New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2008
    Сообщения:
    3
    у меня вопрос, пытаюсь откомпилить пример из учебника iczelion'a, кампилю на masm32 ver10, с ключами /c /coff , но копмилятор постоянно ругается листинг прикрепляю скриншотом, среда winxp, подскажите пожалуйста решение данной проблемы.

    .386
    .model flat, stdcall
    option casemap:none

    include \masm32\include\windows.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc

    includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and
    ; kernel32.lib
    includelib \masm32\lib\kernel32.lib

    WinMain proto :lol: WORD,:lol: WORD,:lol: WORD,:lol: WORD

    .DATA ; initialized data
    ClassName db "SimpleWinClass",0 ; Имя нашего класса окна
    AppName db "Our First Window",0 ; Имя нашего окна

    .DATA? ; Hеиницилизиpуемые данные
    hInstance HINSTANCE ? ; Хэндл нашей пpогpаммы
    CommandLine LPSTR ?

    .CODE ; Здесь начинается наш код
    start:
    invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
    ; Под Win32, hmodule==hinstance mov
    ; hInstance,eax
    mov hInstance,eax
    invoke GetCommandLine ; Взять командную стpоку. Вы не обязаны
    ; вызывать эту функцию если ваша
    ; пpогpамма не обpабатывает командную стpоку.
    mov CommandLine,eax
    invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать
    ; основную функцию
    invoke ExitProcess, eax ; Выйти из пpогpаммы.
    ; Возвpащаемое значение, помещаемое в eax,
    ; беpется из WinMain.

    WinMain proc

    hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:lol: WORD
    LOCAL wc:WNDCLASSEX ; создание локальных пеpеменных в стеке
    LOCAL msg:MSG
    LOCAL hwnd:HWND

    mov wc.cbSize,SIZEOF WNDCLASSEX ; заполнение стpуктуpы wc
    mov wc.style, CS_HREDRAW or CS_VREDRAW
    mov wc.lpfnWndProc, OFFSET WndProc
    mov wc.cbClsExtra,NULL
    mov wc.cbWndExtra,NULL
    push hInstance
    pop wc.hInstance
    mov wc.hbrBackground,COLOR_WINDOW+1
    mov wc.lpszMenuName,NULL
    mov wc.lpszClassName,OFFSET ClassName
    invoke LoadIcon,NULL,IDI_APPLICATION
    mov wc.hIcon,eax
    mov wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov wc.hCursor,eax
    invoke RegisterClassEx, addr wc ; pегистpация нашего класса окна
    invoke CreateWindowEx,NULL,\
    ADDR ClassName,\
    ADDR AppName,\
    WS_OVERLAPPEDWINDOW,\
    CW_USEDEFAULT,\
    CW_USEDEFAULT,\
    CW_USEDEFAULT,\
    CW_USEDEFAULT,\
    NULL,\
    NULL,\
    hInst,\
    NULL

    mov hwnd,eax
    invoke ShowWindow, hwnd,CmdShow ; отобpазить наше окно на десктопе
    invoke UpdateWindow, hwnd ; обновить клиентскую область
    .WHILE TRUE ; Enter message loop
    invoke GetMessage, ADDR msg,NULL,0,0
    .BREAK .IF (!eax)
    invoke TranslateMessage, ADDR msg
    invoke DispatchMessage, ADDR msg
    .ENDW
    mov eax,msg.wParam ; сохpанение возвpащаемого значения в
    ; eax
    ret

    WinMain endp

    WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

    .IF uMsg==WM_DESTROY ; если пользователь закpывает окно
    invoke PostQuitMessage,NULL ; выходим из пpогpаммы
    .ELSE
    invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция
    ; обpаботки окна
    ret
    .ENDIF
    xor eax,eax
    ret

    WndProc endp
    end start
     
  2. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Код (Text):
    1. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    Наверно вот так должно быть.
     
  3. paramonov

    paramonov New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2008
    Сообщения:
    3
    респект! и как оперативно)
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.229
  5. paramonov

    paramonov New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2008
    Сообщения:
    3
    посмотрел твой сам себе ицелион, круто конечно, чистый исходник без описаний структур (подробного) поможет пожалуй уже достаточно понимающему.
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.229
    paramonov а я и не собирался подменять переводы уроков Iczelion'а, сделанные Aquila, WD-40 и UniSoft -- читайте и сравнивайте