007wan |
Отправлено: 31 Мая, 2019 - 12:24:57
|
Эксперт
Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017
Репутация: -2
|
Как установить свой курсор?CODE:#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define WS_VISIBLE 268435456
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "SetFocus", "SetFocus", "User32.dll" );
external(INT, "LoadCursorA", "LoadCursorA", "User32.dll");
external(INT, "SetCursor", "SetCursor", "User32.dll" );
external(INT, "MAKEINTRESOURCEA", "MAKEINTRESOURCEA", "User32.dll" );
createdialog(0);
showdialog(0, "Äèàëîã",100, 100, 300, 300, 1, 1);
while(window ("Äèàëîã")==0)sleep(10);
win w=window ("Äèàëîã");
int edit1;
loop()
{
sleep(1);
}
function getmessage(0, WM_CREATE)
{
edit1 = CreateWindow(0, "EDIT", "65464", WS_CHILD | WS_BORDER | WS_VISIBLE, 100, 100, 100, 20, gethwnd(0), 0, 0, 0);
SetCursor(LoadCursorA(edit1, IDC_HELP));
//SetCursor(LoadCursor(NULL, IDC_WAIT));
} Честно говоря какая-то муть пошла. Там нужна какая-то ресур библиотека, которая преобразует целочисленные значения...Статья
Всё о курсорах
(Добавление)
А, вот проще, но там LoadCursor, я не знаю SetSysCur |
|
|
Zireael |
Отправлено: 31 Мая, 2019 - 14:13:52
|
Эксперт
Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017
Репутация: 580
|
Цитата: Как установить свой курсор?
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define WS_VISIBLE 268435456
#define OCR_WAIT 32514
#define LR_LOADFROMFILE 16
#define IMAGE_CURSOR 2
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "LoadImage", "LoadImageA", "User32.dll");
external(INT, "SetCursor", "SetCursor", "User32.dll" );
external(INT, "WindowFromPoint", "WindowFromPoint", "User32.dll" );
int mouse_x, mouse_y;
int cursor, edit1;
createdialog(0);
showdialog(0, "Dialog",100, 100, 300, 300, 1, 1);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
edit1 = CreateWindow(0, "EDIT", "65464", WS_CHILD | WS_BORDER | WS_VISIBLE, 100, 100, 100, 20, gethwnd(0), 0, 0, 0);
cursor=LoadImage(0, "C:\Windows\Cursors\aero_busy.ani", IMAGE_CURSOR, 32, 32, LR_LOADFROMFILE); // загрузить курсор из файла
}
CREATE_TIMER(0, 100)
{
getmouse(mouse_x, mouse_y);
while(WindowFromPoint(mouse_x, mouse_y)==edit1){SetCursor(cursor); sleep(10); getmouse(mouse_x, mouse_y);}
}
При наведении на edit будет меняться курсор, если он был загружен. |
|
|
007wan |
Отправлено: 01 Июня, 2019 - 13:31:10
|
Эксперт
Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017
Репутация: -2
|
А как для меню сделать курсор?
Я знаю куда вшить меню, но номер меню или доп. параметр не знаю куда писать.
CODE: for (int i=0; i<sizearray(Object_Checkbox); i++)
{
while(WindowFromPoint(Mouse_x, Mouse_y) == Object_Checkbox[i] || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button1 || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button2)
{
SetCursor(Object_Cursor1);
sleep(10);
getmouse(Mouse_x, Mouse_y);
break;
}
}
(Добавление)
007wan пишет: Я знаю куда вшить меню А хотя не знаю. |
|
|
Zireael |
Отправлено: 03 Июня, 2019 - 10:58:23
|
Эксперт
Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017
Репутация: 580
|
Цитата: Как можно реализовать принцип сворачивания окна?
Свернёт окно на панель задач:
CODE:#define WS_EX_APPWINDOW 262144
#define GWL_EXSTYLE -20
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll" );
createdialog(0);
showdialog(0, "Диалог",0, 0, 300, 300, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
SetWindowLong(gethwnd(0), GWL_EXSTYLE, GetWindowLong(gethwnd(0), GWL_EXSTYLE) + WS_EX_APPWINDOW);
} |
|
|
Zireael |
Отправлено: 03 Июня, 2019 - 14:43:51
|
Эксперт
Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017
Репутация: 580
|
CODE:#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define WS_VISIBLE 268435456
#define LR_LOADFROMFILE 16
#define IMAGE_ICON 1
#define WM_SETICON 128
#define ICON_BIG 1
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "LoadImage", "LoadImageA", "User32.dll");
int icon;
createdialog(0);
showdialog(0, "Dialog",100, 100, 300, 300, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
icon=LoadImage(0, "C:\111.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE); // загрузить иконку 'C:\111.ico'
sendmessage(WM_SETICON, ICON_BIG, icon, formatiw(gethwnd(0))); // установить иконку
}
Картинки ico ищите в инете. |
|
|
|