· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Вопрос по панели инструментов

Посл.отвђт Сообщенiе


Дата: Июл 31, 2004 22:48:19

Не получается добавить в ToolBar кнопки.
WINDOWS 98
ToolBar у меня в диалоге (ресурс)
BMP(2 рисунка по 16х16) в ресурсе
Делаю так:
;--------------------------------------------------------------------- -
TB TBBUTTON <>
TBAB TBADDBITMAP <>
Main_ToolBarBitmap -идентификатор в ресурсе
mov TBAB.hInst, 0
invoke LoadBitmap,hInstance,Main_ToolBarBitmap
m2m TBAB.nID,eax
invoke SendMessage,Main_ToolBar_hWnd,TB_ADDBITMAP,2,offset TBAB
mov TB.iBitmap,1;Номер картинки
mov TB.idCommand,1
mov TB.fsState,TBSTYLE_BUTTON
mov TB.fsState,TBSTATE_ENABLED
invoke SendMessage,Main_ToolBar_hWnd,TB_ADDBUTTONS,1,offset TB
;--------------------------------------------------------------------- -
Но результата нет.Помогите пожалуйста.
Тут исходник делаю в RadAsm

_1069815977__HollyDay.rar


Дата: Июл 31, 2004 23:37:28 · Поправил: bogrus

Ты не заполнил размер структуры :
invoke SendMessage,Main_ToolBar_hWnd,TB_BUTTONSTRUCTSIZE,SIZEOF TBBUTTON,0
И с ebx намутил , что прога на NT вообще вываливаеться , замени на нули или ставь "push ebx" перед "xor ebx,ebx" , а потом "pop ebx" перед каждым "ret"


Дата: Авг 1, 2004 00:15:16

> или ставь "push ebx" перед "xor ebx,ebx" , а потом "pop ebx" перед каждым "ret"

В masm можно использовать директиву uses
SomeProc proc uses ebx first:DWORD, second:DWORD
.........
 ret
SomeProc endp


Дата: Авг 1, 2004 01:28:35

Спасибо за помощь программа пашет. А на счет ebx ничего не понял поясните пожалуйста


Дата: Авг 1, 2004 01:56:33

Если используешь в своей процедуре (ф-ции) регистры esi,edi,ebx,ebp то предварительно нужно где-то сохранить их содержимое . Потом , поиспользовав их в своей процедуре , возвращаешь сохранённые значения на свои места (в регистры) .

Потому что процедура вызвавшая твою надееться на то , что содержимое этих регистров не изменилось . Есть такая договорённость .

Вот ты например сначала делаешь xor ebx,ebx .
Потом вызываешь ф-цию GetDlgItem .
Затем mov LVC.fmt,ebx .
А ты уверен , что после GetDlgItem в ebx будет 0 ? Почему ?


Дата: Авг 1, 2004 04:12:05

> А на счет ebx ничего не понял поясните пожалуйста

Процедура, в случае использования регистров ebx,esi,edi,ebp обязана их сохранять на входе и восстанавливать при выходе из процедуры.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.158