Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 481
от 22.06.2006, 09:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 334, Экспертов: 21
В номере:Вопросов: 1, Ответов: 1


Вопрос № 46401: Добрый день уважаемые эксперты! У меня никак не заработает этот кусок программы подскажите в чём дело : include windows.inc include user32.inc include gdi32.inc include kernel32.inc includelib user32.lib includelib gdi32....

Вопрос № 46.401
Добрый день уважаемые эксперты! У меня никак не заработает этот кусок программы подскажите в чём дело :
include windows.inc
include user32.inc
include gdi32.inc
include kernel32.inc

includelib user32.lib
includelib gdi32.lib
includelib kernel32.lib

{Какой-то кусок кода}

WinMain proc hInst :DWORD, hPrevInst :DWORD, CmdLine :DWORD, CmdShow :DWORD
push ebp
mov ebp,esp
sub esp,48h
wc equ WNDCLASSEX ptr [ebp-30h]
msg equ MSG ptr [ebp-48h]

xor ebx,ebx
mov wc.cbSize, sizeof WNDCLASSEX
mov wc.style,CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc,offset win_proc
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
mov dword ptr wc.hInstance,hInst
mov wc.hbrBackground,COLOR_BTNFACE+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,offset class_name
{Дальше идёт код}

И при компиляции выдаются следующие ошибки:
Test.asm(81) : error A2006: undefined symbol : cbSize
Test.asm(82) : error A2006: undefined symbol : style
Test.asm(83) : error A2006: undefined symbol : lpfnWndProc
Test.asm(84) : error A2006: undefined symbol : cbClsExtra
Test.asm(85) : error A2006: undefined symbol : cbWndExtra
И так далее.
Отправлен: 16.06.2006, 12:03
Вопрос задал: Шурыгин В.В. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Шурыгин В.В.!
Запиши вместо
WinMain proc hInst :DWORD, hPrevInst :DWORD, CmdLine :DWORD, CmdShow :DWORD
push ebp
mov ebp,esp
sub esp,48h
wc equ WNDCLASSEX ptr [ebp-30h]
msg equ MSG ptr [ebp-48h]

WinMain proc hInst :DWORD, hPrevInst :DWORD, CmdLine :DWORD, CmdShow :DWORD
LOCAL WNDCLASSEX wc
LOCAL MSG msg

Для того и придумали этот механизм, чтобы сказать компилятору,
что wc - это именно структура WNDCLASSEX, а не просто подстановка строки

Хотя, и в твоем случае можно сказать, например для поля cbClsExtra
mov wc+WNDCLASSEX.cbClsExtra, NULL
т.е как бы добавляем константу, описывающую смещение в структуре
И так для всех
Согласись, что это неудобно
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 16.06.2006, 12:55


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное