| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для Windows/Dos > Проблемы с masm32 |
| Автор: zxcc 11.10.2006, 10:10 |
| При создание программы на masm32 под windows xp,основанную на диалогах, ассемблируется и линкуется все без ошибок, а когда запускаешь -- окно не отображается, даже в примерах из книжек не показываются диалоги.Помогите.Заранее спасибо[email protected] |
| Автор: Damarus 11.10.2006, 10:47 |
| zxcc, код в студию. |
| Автор: zxcc 14.10.2006, 12:41 |
| .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 includelib \masm32\lib\kernel32.lib DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD .data DIAL db "DIAL1",0 .data? hInstance HINSTANCE ? .code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke DialogBoxParam,hInstance,ADDR DIAL,0,ADDR DlgProc, 0 invoke ExitProcess,eax DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_CLOSE invoke EndDialog,hWnd,NULL .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam .ENDIF xor eax,eax ret DlgProc endp end start Файл ресурсов: #define WS_SYSMENU 0x00080000L #define WS_MINIMIZEBOX 0x00020000L #define WS_MAXIMIZEBOX 0x00010000L DIAL1 DIALOG 0, 0, 240, 120 STYLE WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX|WS_VISIBLE CAPTION "Пример диалогового окна" CLASS "DLGCLASS" FONT 8, "Arial" { } |
| Автор: 586 14.10.2006, 14:15 | ||
zxcc, неужели так трудно взять отладчик?
следовательно: #define WS_SYSMENU 0x00080000L #define WS_MINIMIZEBOX 0x00020000L #define WS_MAXIMIZEBOX 0x00010000L DIAL1 DIALOG 0, 0, 240, 120 STYLE WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX|WS_VISIBLE CAPTION "Пример диалогового окна" CLASS "DLGCLASS" FONT 8, "Arial" { } |
| Автор: zxcc 14.10.2006, 15:46 |
| Спасибо большое.Но у меня всё равно не получается.Та же проблема.Наверно я что то не так делаю. |
| Автор: 586 14.10.2006, 15:56 |
| вот Добавлено @ 16:01 функцию DefWindowProc убери - из-за неё диалог глючит |
| Автор: zxcc 14.10.2006, 16:18 |
| Спасибо.Запускаю test.exe всё работает,но если пробую компилировать ,то после компиляции опять окно не отображается.Можете объяснить как пользоваться masm32 я чайник в этом деле. |
| Автор: 586 14.10.2006, 16:33 |
| 1) компиляция test.asm ml /c /coff /IC:\MASM32\INCLUDE test.asm или просто ml /c /coff test.asm 2) копмиляция ресурсов rc res.rc 3) создание exe link /SUBSYSTEM:WINDOWS /LIBPATH:C:\masm32\lib test.obj res.res или просто link /SUBSYSTEM:WINDOWS test.obj res.res Подробнее - см. здесь: http://search.msdn.microsoft.com/search/Default.aspx?__VIEWSTATE=&query=link.exe&siteid=0&tab=0 (в поиске) |
| Автор: zxcc 14.10.2006, 16:41 |
| Я пользуюсь qeditior.exe из masm32.Сохраняю файл в разрешение .asm ,ресурсы .rc А через ком.строку не знаю как. |
| Автор: 586 14.10.2006, 16:45 |
| пользуйся блокнотом. для облегчения труда созд. bat-файлы |
| Автор: zxcc 14.10.2006, 16:48 |
| Спасибо.А можно подробнее. |
| Автор: 586 14.10.2006, 16:51 |
| подробнее в аттаче было. |
| Автор: zxcc 14.10.2006, 16:55 |
| там на английском |
| Автор: 586 14.10.2006, 16:56 |
| |
| Автор: anwe 14.10.2006, 22:31 | ||||
Тут знать нечего, просто пишешь там, то что 586 указал. Но если пользуешься qeditior - пользуйся. Ошибка не в этом. Ошибка в файле ресурсов. Ты прописал значения для STYLE WS_SYSMENU, WS_MINIMIZEBOX и WS_MAXIMIZEBOX, а для WS_VISIBLE - нет. Добавь: #define WS_VISIBLE 0x10000000L 586 писал:
Это, как раз не обязательно, из-за нее не глючит, хотя и не нужна в процедуре. |
| Автор: zxcc 15.10.2006, 10:19 |
| Добавил,но ничего не получилось. При сборке выдает Microsoft ® Windows ® Resource Compiler, Version 5.00.1823.1 - Build 1823 Copyright © Microsoft Corp. 1985-1998. All rights reserved. Using codepage 1251 as default Creating rsrc.RES RC: RCPP -CP 1251 -f D:\masm32\RCa03588 -g D:\masm32\RDa03588 -DRC_INVOKED -D_WI N32 -pc\:/ -E -I. -I . RC : fatal error RC1110 : could not open rsrc.rc Microsoft ® Windows Resource To Object Converter Version 5.00.1736.1 Copyright © Microsoft Corp. 1992-1997. All rights reserved. CVTRES : fatal error CVT1101: cannot open rsrc.res for reading |
| Автор: anwe 15.10.2006, 13:58 | ||||
586, раз уж на то пошло, то надо сказать (написать), что в модальных диалоговых окнах, как это, вообще не используется DefWindowProc. Там если функция возвращает TRUE, значит сообщение сделано для диалогового окна и оно обрабатывается менеджером диалоговых сообщений и FALSE - в противном случае, поэтому правильно было бы написать так:
И тогда все работает правильно. zxcc - не знаю что и сказать. Ради этого написал и скомпилировал у себя твое творение - все же идет!!! При сборке выдает все тоже кроме
Попоробуй вместо описания значений стилей прописать ссылку на файл resource.h. Если ты используешь пакет masm32, он должен быть у тебя. |
| Автор: zxcc 15.10.2006, 16:20 |
| А есть ли другой способ создания ресурсов. |
| Автор: anwe 15.10.2006, 16:38 |
| Ты открой через то же qeditor файл bres.bat и сравни то, что там написано с тем, что указал 586: какой там должен быть прописан код. А по поводу другого способа - можешь использовать специальные редакторы ресурсов. |
| Автор: 586 15.10.2006, 19:00 |
Создаёшь res-файл (пустой), открываешь редактором ресурсов и редактируешь. И не надо никаких rc-файлов, и это удобно. Лично я использую редактор ресурсов из Micro$oft Visual C++ 6. |
| Автор: zxcc 15.10.2006, 20:36 |
| А где можно узнать,как пользоваться Microsoft Visual C++6. |
| Автор: 586 15.10.2006, 21:13 |
| а там нет ничего сложного. Я без помощи научился. zxcc, у тебя вообще есть опыт программирования в других средах? Мне кажется, асм тебе ещё рановат. С++ хоть знаешь? Не знаешь, как пользоваться, возми другой редактор. Поищи в Интернете. |
| Автор: anwe 15.10.2006, 21:40 | ||
Не, ну это зря! Асм не сложнее других. Я им пользуюсь, а С++ почти не знаю. Могу только догадываться о том, какая логика прописана в том или ином синтаксисе, зная ее написание в асме. |
| Автор: zxcc 16.10.2006, 05:46 |
| Нет я только учусь.И С++ тоже пытаюсь осилить но больше ассемблер нравиться.В С++ с типами возвр.значений заморочек много.А вот что за проблема с компилятором не могу понять.( А может во мне).Большое Всем спасибо за помощь. |
| Автор: anwe 16.10.2006, 21:43 | ||
| Не, ты все же посмотри bres.bat. Вот мой:
|
| Автор: zxcc 17.10.2006, 09:15 |
Спасибо anwe,что не забываешь.Посмотрел свой bres.bat.Всё тоже самое как и у тебя.На одном из форумов у одного парня была такая же проблема как и у меня.И он её как то решил. Но как не говорит. |
| Автор: tnt17 17.10.2006, 09:26 |
| Возьми какую-то IDE, заточенную под масм.Например: http://wasm.ru/baixado.php?mode=tool&id=215 |