Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с masm32, не отображается диалоговое окно 
:(
    Опции темы
zxcc
Дата 11.10.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



При создание программы на masm32 под windows xp,основанную на диалогах, ассемблируется и линкуется все без ошибок, а когда запускаешь -- окно не отображается, даже в примерах из книжек не показываются диалоги.Помогите.Заранее спасибо[email protected]

PM MAIL   Вверх
Damarus
Дата 11.10.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: нет
Всего: 29



zxcc, код в студию.
PM MAIL ICQ Jabber   Вверх
zxcc
Дата 14.10.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



.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"
{
}

PM MAIL   Вверх
586
Дата 14.10.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



zxcc, неужели так трудно взять отладчик?
Код
.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 dd ?

.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, eax, offset DIAL, 0, offset DlgProc, 0
invoke GetLastError
int 3   ; eax=0000057f - Не удаётся найти класс окна
ret


DlgProc proc hWnd, uMsg, wParam, lParam:DWORD
  
 .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"
{
}
PM   Вверх
zxcc
Дата 14.10.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Спасибо  большое.Но у меня всё равно не получается.Та же проблема.Наверно я что то не так делаю.
PM MAIL   Вверх
586
Дата 14.10.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



вот

Добавлено @ 16:01 
функцию DefWindowProc убери - из-за неё диалог глючит

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  test.rar 1,64 Kb
PM   Вверх
zxcc
Дата 14.10.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Спасибо.Запускаю test.exe всё работает,но если пробую компилировать ,то после компиляции опять окно не отображается.Можете объяснить как пользоваться masm32  я чайник в этом деле.
PM MAIL   Вверх
586
Дата 14.10.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



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/De...eid=0&tab=0 (в поиске)
PM   Вверх
zxcc
Дата 14.10.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Я пользуюсь qeditior.exe из masm32.Сохраняю файл в разрешение .asm ,ресурсы .rc А через ком.строку не знаю как.
PM MAIL   Вверх
586
Дата 14.10.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



пользуйся блокнотом.
для облегчения труда созд. bat-файлы
PM   Вверх
zxcc
Дата 14.10.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Спасибо.А можно  подробнее.
PM MAIL   Вверх
586
Дата 14.10.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



подробнее в аттаче было.
PM   Вверх
zxcc
Дата 14.10.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



там на английском
PM MAIL   Вверх
586
Дата 14.10.2006, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



 smile всё что надо я написал. у меня всё работает.
PM   Вверх
anwe
Дата 14.10.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Цитата

Я пользуюсь qeditior.exe из masm32.Сохраняю файл в разрешение .asm ,ресурсы .rc А через ком.строку не знаю как.

Тут знать нечего, просто пишешь там, то что 586 указал.
Но если пользуешься qeditior - пользуйся. Ошибка не в этом.
Ошибка в файле ресурсов. Ты прописал значения для STYLE WS_SYSMENU, WS_MINIMIZEBOX и WS_MAXIMIZEBOX, а для WS_VISIBLE - нет.
Добавь:

#define WS_VISIBLE          0x10000000L

586 писал:
Цитата

функцию DefWindowProc убери - из-за неё диалог глючит 

Это, как раз не обязательно, из-за нее не глючит, хотя и не нужна в процедуре.
PM MAIL   Вверх
zxcc
Дата 15.10.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Добавил,но ничего не получилось.
 

При сборке выдает 
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 

PM MAIL   Вверх
586
Дата 15.10.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата(anwe @  14.10.2006,  23:31 Найти цитируемый пост)
586 писал:
Цитата
Функцию DefWindowProc убери - из-за неё диалог глючит 


Это, как раз не обязательно, из-за нее не глючит, хотя и не нужна в процедуре. 

Кликни правой клавишей по заголовку окна, а потом левой по самому окну - диалог повиснет.

PM   Вверх
anwe
Дата 15.10.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



586, раз уж на то пошло, то надо сказать (написать), что в модальных диалоговых окнах, как это, вообще не используется DefWindowProc. Там если функция возвращает TRUE, значит сообщение сделано для диалогового окна и оно обрабатывается менеджером диалоговых сообщений и FALSE - в противном случае, поэтому правильно было бы написать так:
Код

...
.IF uMsg==WM_CLOSE
     invoke EndDialog,hWnd,NULL
.ELSE
     mov    eax,FALSE
     ret
.ENDIF
mov    eax,TRUE
ret
...

И тогда все работает правильно.

zxcc - не знаю что и сказать. Ради этого написал и скомпилировал у себя твое творение - все же идет!!! При сборке выдает все тоже кроме 
Цитата

RC : fatal error RC1110 : could not open rsrc.rc 
 и получается DIALOG: DIAL1

Попоробуй вместо описания значений стилей прописать ссылку на файл resource.h. Если ты используешь пакет masm32, он должен быть у тебя.
PM MAIL   Вверх
zxcc
Дата 15.10.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



А есть ли другой способ создания ресурсов.
PM MAIL   Вверх
anwe
Дата 15.10.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Ты открой через то же qeditor файл bres.bat и сравни то, что там написано с тем, что указал 586: какой там должен быть прописан код.

А по поводу другого способа - можешь использовать специальные редакторы ресурсов.

Это сообщение отредактировал(а) anwe - 15.10.2006, 16:48
PM MAIL   Вверх
586
Дата 15.10.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата(zxcc @  15.10.2006,  17:20 Найти цитируемый пост)
А есть ли другой способ создания ресурсов.

Создаёшь res-файл (пустой), открываешь редактором ресурсов и редактируешь. И не надо никаких rc-файлов, и это удобно. Лично я использую редактор ресурсов из Micro$oft Visual C++ 6.
PM   Вверх
zxcc
Дата 15.10.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



А где можно узнать,как пользоваться Microsoft Visual C++6.
PM MAIL   Вверх
586
Дата 15.10.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



а там нет ничего сложного. Я без помощи научился.

zxcc, у тебя вообще есть опыт программирования в других средах? Мне кажется, асм тебе ещё рановат. С++ хоть знаешь?

Не знаешь, как пользоваться, возми другой редактор. Поищи в Интернете.

Это сообщение отредактировал(а) 586 - 15.10.2006, 21:14
PM   Вверх
anwe
Дата 15.10.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Цитата

zxcc, у тебя вообще есть опыт программирования в других средах? Мне кажется, асм тебе ещё рановат. С++ хоть знаешь?

Не, ну это зря! Асм не сложнее других. Я им пользуюсь, а С++ почти не знаю. Могу только догадываться о том, какая логика прописана в том или ином синтаксисе, зная ее написание в асме.
PM MAIL   Вверх
zxcc
Дата 16.10.2006, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Нет я только учусь.И С++ тоже пытаюсь осилить но больше ассемблер нравиться.В С++ с типами возвр.значений заморочек много.А вот что за проблема с компилятором не могу понять.( А может во мне).Большое Всем спасибо за помощь.
PM MAIL   Вверх
anwe
Дата 16.10.2006, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Не, ты все же посмотри bres.bat.
Вот мой:
Код

@echo off
\masm32\bin\rc /v rsrc.rc
\masm32\bin\cvtres /machine:ix86 rsrc.res
pause

PM MAIL   Вверх
zxcc
Дата 17.10.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.10.2006

Репутация: нет
Всего: нет




Спасибо anwe,что не забываешь.Посмотрел свой bres.bat.Всё тоже самое как и у тебя.На одном из форумов у одного парня была такая же проблема как и у меня.И он её как то решил. Но как не говорит.
PM MAIL   Вверх
tnt17
Дата 17.10.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.10.2006

Репутация: нет
Всего: нет



Возьми какую-то IDE, заточенную под масм.Например:
http://wasm.ru/baixado.php?mode=tool&id=215 
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.1050 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.