Zireael |
Отправлено: 20 Марта, 2021 - 00:36:43
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Архив распаковать, длл закинуть в папку с кибор.
https://drive.google.com/file/d/...view?usp=sharing
CODE:external(INT, "create_window", "create_window", "Window.dll");
external(INT, "destroy_window", "destroy_window", "Window.dll");
external(INT, "get_window_rect", "get_window_rect", "Window.dll");
int rect[4]; // массив для координат окна
// передаваемые параметры
// позиция окна по X и Y
// размеры окна
// цвет окна
// прозрачность от 0 до 255
create_window(200, 300, 500, 400, rgb(255, 0, 255), 150); // создать окно
while(getkeystate(90)==0) // пока не нажата клавиша Z
{
get_window_rect(address(#rect[0])); // получить координаты окна
textout(0, 0, 0, "Нажать Z чтобы остановить скрипт", 1);
textout(1, 0, 20, "Координаты окна:", 1);
textout(2, 0, 40, "Левый верхний угол: "+format(rect[0])+" "+format(rect[1]), 1);
textout(3, 0, 60, "Правый нижний: "+format(rect[2])+" "+format(rect[3]), 1);
sleep(10);
}
destroy_window(); // уничтожить окно
Можно перетаскивать окно и менять размеры. |
|
|
Kibor |
Отправлено: 06 Апреля, 2021 - 02:35:22
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
ivantu пишет: На него же нельзя накидать кнопки и т.д?
Кнопка на прозрачном (Отобразить)CODE:#define WS_VISIBLE 0x10000000
#define WS_EX_TOPMOST 0x00000008
#define WS_SIZEBOX 0x00040000
#define IDC_SIZEALL 32646
#define IDC_ARROW 32512
#define WM_CLOSE 0x0010
#define WS_POPUP 0x80000000
#define WS_EX_LAYERED 524288
#define PS_SOLID 0
#define LWA_ALPHA 2
#define HTCAPTION 2
#define WS_CHILD 1073741824
external(INT, "RegisterClass", "RegisterClassA", "User32.dll");
external(INT, "UnregisterClass", "UnregisterClassA", "User32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "LoadCursor", "LoadCursorA", "User32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "GetModuleHandle", "GetModuleHandleA", "Kernel32.dll");
external(INT, "SetLayeredWindowAttributes", "SetLayeredWindowAttributes", "User32.dll");
external(INT, "SetCursor", "SetCursor", "User32.dll");
int fon_color = rgb(255, 0, 255); // цвет фона
int b1;
int WinProc=address("WindowProc");
char Class[99];
strcpy(#Class[0], "myclass");
int PWNDCLASS[10];//Структура WNDCLASS
int CLASS=address(#PWNDCLASS[0]);//Указатель на название класса
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру
PWNDCLASS[1] = WinProc;
PWNDCLASS[6] = LoadCursor(0, IDC_ARROW);
PWNDCLASS[7] = CreateSolidBrush(fon_color); // цвет фона диалога
PWNDCLASS[9] = address(#Class[0]); // имя класса окна
int cursor_size_all = LoadCursor(0, IDC_SIZEALL);
if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать класс"); goto er;}
int Win=CreateWindow(WS_EX_TOPMOST | WS_EX_LAYERED, address(#Class[0]), "", WS_POPUP | WS_VISIBLE | WS_SIZEBOX, 200, 100, 400, 300, 0, 0, 0, 0);
SetLayeredWindowAttributes(Win, 0, 127, LWA_ALPHA); // 127 - уровень прозрачности от 0 до 255
while(getkeystate(90)==0) // пока не нажата клавиша Z
{
textout(0, 0, 0, "Нажать Z чтобы остановить скрипт", 1);
sleep(1);
}
sendmessage(WM_CLOSE, 0, 0, formatiw(Win));
UnregisterClass(address(#Class[0]), 0);
er:;
function getmessage(WM_CREATE)
{
b1=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 200, 30, message.hwnd, 0, 0, 0);
}
function getmessage(WM_COMMAND)
{
if (message.lparam==b1)//Если кнопка
{
messagebox ("Кнопка");
}
}
function getmessage (WM_LBUTTONDOWN)
{
SetCursor(cursor_size_all);
sendmessage(WM_NCLBUTTONDOWN, HTCAPTION, 0, formatiw(Win));
} |
|
|
Kibor |
Отправлено: 06 Апреля, 2021 - 08:32:32
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
ivantu пишет: А чтоб у окна были элементы управления, закрыть свернуть и на весь экран, что нужно?
в CreateWindow
CODE:WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_SIZEBOX
CODE:#define WS_SYSMENU 524288
#define WS_MINIMIZEBOX 131072
#define WS_MAXIMIZEBOX 65536
#define WS_VISIBLE 0x10000000
#define WS_SIZEBOX 0x00040000
|
|
|
|