Подскажите пожалуйста как правильно прогу скомпилировать? Значит поставил я masm32 . скачал с вашего сайта туториалы Iczelion'a на русском, стал потихоньку читать ,вникать! 1 и второй урок прошёл на ура. Компилировал в командной строке ml /c /coff /Cp myprog.asm и link /subsystem:windows /libpath:c:\masm32\lib myprog.obj . (myprog.asm в c:\masm32\bin лежал) Получался exeшник . Запускал всё работало. Дошёл до 3-тьего урока и всё остановилось. Компилировал также , а компилятор выдаёт кучу ошибок. Обьектный файл не создаётся! Вот исходник (копировал из тотуриала) .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib include \masm32\include\kernel32.inc 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еиницилизируемые данные hInstance HINSTANCE ? ; Хэндл нашей программы CommandLine LPSTR ? .CODE ; Здесь начинается наш код start: invoke GetModuleHandle, NULL ; Взять хэндл программы ; Под Win32, hmodule==hinstance mov hInstance,eax mov hInstance,eax invoke GetCommandLine ; Взять командную строку. Вы не обязаны вызывать эту функцию ЕСЛИ ваша программа не обрабатывает командную строку. mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать основную функцию invoke ExitProcess, eax ; Выйти из программы. ; Возвращаемое значение, помещаемое в eax, берется из WinMain'а. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShowWORD LOCAL wc:WNDCLASSEX ; создание локальных переменных в стеке LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLASSEX ; заполнение структуры 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 ; регистрация нашего класса окна 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 ; отобразить наше окно на десктопе 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 ; сохранение возвращаемого значения в eax ret WinMain endp WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_DESTROY ; если пользователь закрывает окно invoke PostQuitMessage,NULL ; выходим из программы .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция обработки окна ret .ENDIF xor eax,eax ret WndProc endp end start Компилятор пишет 15 раз подряд "Undefined symbol :wc" "invalid character in file" "conflicting parameter difinition" "syntax error :hinstanсe" и т.д. Ну в общем я подумал что в туториале ошибок быть не должно и что я сам что то неправильно делаю! Думал версия масма не та скачал MASM32v7! Компильнул. Всё та же куча ошибок!! Подскажите пожалуйста что я не так делаю?????????
Nafanya Вам не кажется, что вот эта строчка выглядит подозрительно? А ошибки в туториалах есть, чтобы новички действительно вникали в код, а не копипастили вслепую и двигались дальше.