у меня вопрос, пытаюсь откомпилить пример из учебника 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 WORD,WORD,WORD,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,CmdShowWORD 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
Код (Text): WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD Наверно вот так должно быть.
посмотрел твой сам себе ицелион, круто конечно, чистый исходник без описаний структур (подробного) поможет пожалуй уже достаточно понимающему.
paramonov а я и не собирался подменять переводы уроков Iczelion'а, сделанные Aquila, WD-40 и UniSoft -- читайте и сравнивайте