Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Toolbar (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define TB_AUTOSIZE 1057
#define ILC_MASK 1
#define LVSIL_SMALL 1
#define IMAGE_ICON 1
#define LR_LOADFROMFILE 16
#define TB_SETIMAGELIST 1072
#define TB_BUTTONSTRUCTSIZE 1054
#define TB_ADDBUTTONSA 1044
#define ILC_COLOR24 24
#define TBSTATE_ENABLED 4
#define WM_USER 1024
#define WS_BORDER 8388608
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll" );
external(INT, "ImageList_Create", "ImageList_Create", "Comctl32.dll");
external(INT, "ImageList_ReplaceIcon", "ImageList_ReplaceIcon", "Comctl32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "LoadImage", "LoadImageA", "User32.dll");
int toolbar, ImageList;
char TBBUTTON[60];
createdialog(0);
showdialog(0, "Dialog", 300, 300, 400, 300, 1, 1);
sendmessage(TB_AUTOSIZE, 0, 0, formatiw(toolbar));
loop()sleep(100);
function getmessage(0, WM_CREATE)
{
toolbar=CreateWindow(0, "ToolbarWindow32", "",WS_VISIBLE | WS_CHILD | WS_BORDER, 0, 0, 0, 0, gethwnd(0), 0, 0, 0);
ImageList = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR24 , 3, 1); // 3 - количество изображений
// добавить картинку из файла
ImageList_ReplaceIcon(ImageList, -1, LoadImage(0, "C:\Users\Home\Desktop\1.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE));
initialarray(#TBBUTTON[0], 0);
// структура TBBUTTON для первой кнопки
writeaddress(0, address(#TBBUTTON[0])); // iBitmap
writeaddress(WM_USER + 1, address(#TBBUTTON[4])); // idCommand
TBBUTTON[8]=TBSTATE_ENABLED; // fsState
// структура TBBUTTON для второй кнопки
writeaddress(1, address(#TBBUTTON[20]));
writeaddress(WM_USER + 2, address(#TBBUTTON[24]));
TBBUTTON[28]=TBSTATE_ENABLED;
writeaddress(2, address(#TBBUTTON[40]));
writeaddress(WM_USER + 3, address(#TBBUTTON[44]));
TBBUTTON[48]=TBSTATE_ENABLED;
sendmessage(TB_SETIMAGELIST, LVSIL_SMALL, ImageList, formatiw(toolbar)); // установить список изображений
sendmessage(TB_BUTTONSTRUCTSIZE, 20, 0, formatiw(toolbar)); // задать размер структуры TBBUTTON
sendmessage(TB_ADDBUTTONSA, 3, address(#TBBUTTON[0]), formatiw(toolbar)); // добавить 3 кнопки
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==toolbar)
{
if(message.wparam==WM_USER + 1){messagebox(1); return;}
if(message.wparam==WM_USER + 2){messagebox(2); return;}
if(message.wparam==WM_USER + 3){messagebox(3); return;}
}
} Ошибка работы WM_COMMAND. Сейчас вверху код показывает, что всё работает, но если добавить WM_NOTIFY (Отобразить)CODE:function getmessage(0, WM_NOTIFY)
{
return;
} То WM_COMMAND перестает обрабатывать сообщения ТОЛЬКО для toolbar, а кнопки, статики, галочки итд работают. Как исправить, может есть костыли? |