Zireael |
Отправлено: 08 Июня, 2019 - 14:40:06
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как использовать функции CreateHatchBrush
code (Отобразить)CODE:#define HS_HORIZONTAL 0
#define HS_VERTICAL 1
#define HS_FDIAGONAL 2
#define HS_BDIAGONAL 3
#define HS_CROSS 4
#define HS_DIAGCROSS 5
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "CreateHatchBrush", "CreateHatchBrush", "Gdi32.dll");
external(INT, "FillRect", "FillRect", "User32.dll");
int hdc;
int rect1[4]={0, 0, 100, 100}
int rect2[4]={110, 0, 210, 100}
int rect3[4]={0, 110, 100, 210}
int rect4[4]={110, 110, 210, 210}
int rect5[4]={0, 220, 100, 320}
int rect6[4]={110, 220, 210, 320}
int brush1=CreateHatchBrush(HS_HORIZONTAL, 255);
int brush2=CreateHatchBrush(HS_VERTICAL, 65280);
int brush3=CreateHatchBrush(HS_FDIAGONAL, 6700060);
int brush4=CreateHatchBrush(HS_BDIAGONAL, 16000000);
int brush5=CreateHatchBrush(HS_CROSS, 0);
int brush6=CreateHatchBrush(HS_DIAGCROSS, 12935046);
createdialog(0);
showdialog(0, "Диалог",100, 100, 230, 360, 1, 1);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
hdc=GetDC(gethwnd(0));
}
CREATE_TIMER(0, 200)
{
FillRect(hdc, address(#rect1[0]), brush1);
FillRect(hdc, address(#rect2[0]), brush2);
FillRect(hdc, address(#rect3[0]), brush3);
FillRect(hdc, address(#rect4[0]), brush4);
FillRect(hdc, address(#rect5[0]), brush5);
FillRect(hdc, address(#rect6[0]), brush6);
} |
|
|
007wan |
Отправлено: 06 Июля, 2019 - 08:51:44
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Как создать 3 галочки(главные) и 3 второстепенные в external и сделать зависимость такую:
Расположение:
Цитата:
Меню1▼
Подменю1(невидима)
/*пробел*/
Меню2▼
Подменю2(невидима)
/*пробел*/
Меню3▼
Подменю3(невидима)
Когда нажимаем на Меню1,2,3... То открывается подменю 1,2 или 3 и меняется стрелка вверх, а когда нажимаем снова, то подменюшки скрываются и содержимое сдвигается вверх(то, что с низу)
(Добавление)
Пожалуйста, мне нужен этот пример, времени совсем нету, а так я знаю, что оно состоит из галочек и изображений из интернета и SetWindowPos(Отредактировано автором: 06 Июля, 2019 - 08:52:03) |
|
|
Zireael |
Отправлено: 06 Июля, 2019 - 19:13:40
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как создать 3 галочки(главные) и 3 второстепенные
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define BS_AUTOCHECKBOX 3
#define BM_GETSTATE 242
#define SW_HIDE 0
#define SW_SHOW 5
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "ShowWindow", "ShowWindow", "User32.dll" );
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
int check[6], state;
loop()sleep(10);
function getmessage(0, WM_COMMAND)
{
for(int i=0; i<3; i++)
{
if(message.lparam==check[i])
{
state=sendmessage(BM_GETSTATE, 0, 0 , formatiw(check[i]));
if(state==1 || state==9)ShowWindow(check[i+3], SW_SHOW);
else ShowWindow(check[i+3], SW_HIDE);
}
}
}
function getmessage(0, WM_CREATE)
{
check[0]=CreateWindow(0, "BUTTON", "Меню1", WS_CHILD | BS_AUTOCHECKBOX | WS_VISIBLE, 20, 10, 70, 20, gethwnd(0), 0, 0, 0);
check[1]=CreateWindow(0, "BUTTON", "Меню2", WS_CHILD | BS_AUTOCHECKBOX | WS_VISIBLE, 20, 50, 70, 20, gethwnd(0), 0, 0, 0);
check[2]=CreateWindow(0, "BUTTON", "Меню3", WS_CHILD | BS_AUTOCHECKBOX | WS_VISIBLE, 20, 90, 70, 20, gethwnd(0), 0, 0, 0);
check[3]=CreateWindow(0, "BUTTON", "Подменю1", WS_CHILD | BS_AUTOCHECKBOX, 30, 30, 90, 20, gethwnd(0), 0, 0, 0);
check[4]=CreateWindow(0, "BUTTON", "Подменю2", WS_CHILD | BS_AUTOCHECKBOX, 30, 70, 90, 20, gethwnd(0), 0, 0, 0);
check[5]=CreateWindow(0, "BUTTON", "Подменю3", WS_CHILD | BS_AUTOCHECKBOX, 30, 110, 90, 20, gethwnd(0), 0, 0, 0);
} |
|
|
|