Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Asm] Про структуры и libы

5.3K
31 декабря 2007 года
Somebody
185 / / 24.12.2006
У меня 2 вопросика.
1) Что здесь может быть неправильно? \ в конце строк не помогают.
MASM 6.14: error A2186: extra characters in literal initialization
Код:
WndClass WNDCLASSEX {cbSize=sizeof WNDCLASSEX,
style=0,
lpfnWndProc=WindowProc,
cbClsExtra=?,
cbWndExtra=?,
hInstance=?,
hIcon=0,
hCursor=0,
hbrBackground=0,
lpszMenuName=0,
lpszClassName=offset WndClassName,
hIconSm=?}

2) Мне нужна функция SetLayeredWindowAttributes, в inc файлах она есть, а в lib'ах нет (либы не из этого дистрибутива). Т.е. в user32.lib есть более старые функции, а этой нет. Как бы прогу сассемблировать? Или лучше сразу lib'ы новые скачать?
261
01 января 2008 года
ahilles
1.5K / / 03.11.2005
1. может я чего то не догоняю..., но вроде так в масме нельзя

обычно всё это делается так:
Код:
wc  WNDCLASS <?> ; структура класса
.......
Mov [wc.style], CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLASS
    ; устанавливаем стиль окна
Mov [wc.lpfnWndProc], offset WndProc ;
Mov [wc.cbClsExtra], 0
Mov [wc.cbWndExtra], 0
Mov eax, [hInst]
Mov [wc.hInstance], eax
Invoke LoadIcon,0,IDI_APPLICATION ; получаем значок приложения по
            ; умолчанию
Mov [wc.hIcon], eax

Invoke LoadCursorA,0,IDC_ARROW ; получаем курсор по умолчанию
Mov [wc.hCursor], eax

Mov [wc.hbrBackground], COLOR_BACKGROUND+1
Mov dword ptr [wc.lpszMenuName], 0
Mov dword ptr [wc.lpszClassName], offset szClassName ; задаём имя класса
            ;окна
Invoke RegisterClassA,offset wc ; регистрируем класс окна


2. Импортируй эту функцию динамически через LoadLibrary и GetProcAddress
5.3K
01 января 2008 года
Somebody
185 / / 24.12.2006
1. С чего бы это нельзя? На всех языках можно, и на асме можно, это будет прямо в секции в exe уже инициализированная структура. Что можно это 100%. Только не знаю, как правильно записать это.
2. А статически никак? Нельзя 2 lib'ы для 1 dll'ки?
5.3K
02 января 2008 года
Somebody
185 / / 24.12.2006
Спасибо за ссылки. Но к таким dll, как kernel и user, новые lib'ы можно скачать, наверное, хотя я не искал. Меня больше интересует, можно ли как-нибудь сделать статический импорт, используя несколько lib файлов для 1 dll? Наверное, нельзя, ну а вдруг я просто не знаю?
4.6K
02 января 2008 года
&amp;&amp;&amp;&amp;M
21 / / 03.12.2003
MASM идет с VisualStudio, *.lib можно взять там.
5.3K
04 января 2008 года
Somebody
185 / / 24.12.2006
Ладно, со вторым вопросом разобрался. А как инициализировать структуры? Искал в Инете - вроде у меня так же. Но почему-то не ассемблируется.
261
05 января 2008 года
ahilles
1.5K / / 03.11.2005
инициилизация структуры производится через угловые скобки <>
допустим структура содержит два поля x и y, то пишется так
 
Код:
struct1 tstruct <12,13>

struct1.x будет равен 12, а struct1.y будет равен 13
аналогично и в твоём случае со структурой WNDCLASSEX
5.3K
06 января 2008 года
Somebody
185 / / 24.12.2006
Всем спасибо, я разобрался.
При инициализации не надо писать field=value, а надо просто value. Скобки при этом можно любые (как угловые, так и фигурные), обрыв строки без \ можно ставить после запятой, но при этом есть 1 глюк masm'а.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог