Zireael |
Отправлено: 01 Февраля, 2024 - 01:26:43
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define WS_BORDER 0x00800000
#define WS_EX_TOPMOST 0x00000008
#define WS_OVERLAPPEDWINDOW 0xCF0000
#define IDC_ARROW 32512
#define NULL 0
external(INT, "RegisterClass", "RegisterClassA", "User32.dll");
external(INT, "UnregisterClass", "UnregisterClassA", "User32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetModuleHandle", "GetModuleHandleA", "Kernel32.dll");
external(INT, "LoadCursor", "LoadCursorA", "User32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
int fon_color = rgb(255, 0, 255); // цвет фона диалога
char Class[99];
strcpy(#Class[0], "myclass");
int PWNDCLASS[10];//Структура WNDCLASS
int CLASS=address(#PWNDCLASS[0]);//Указатель на название класса
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру
PWNDCLASS[1] = address("WindowProc");
PWNDCLASS[5] = LoadIcon(GetModuleHandle(NULL), 128); // иконка
PWNDCLASS[6] = LoadCursor(0, IDC_ARROW);
PWNDCLASS[7] = CreateSolidBrush(fon_color); // цвет фона диалога
PWNDCLASS[9] = address(#Class[0]); // имя класса окна
if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать класс"); goto end;}
int Main = CreateWindow(WS_EX_TOPMOST, address(#Class[0]), "", WS_VISIBLE | WS_OVERLAPPEDWINDOW, 200, 100, 400, 300, 0, 0, 0, 0);
// создание контролов
int button0 = CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 80, 20, Main, 0, 0, 0);
int edit0 = CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD, 10, 40, 100, 20, Main, 0, 0, 0);
loop()sleep(10);
end:;
function getmessage(WM_COMMAND)
{
char text[99];
if (message.lparam==button0) //Если нажата кнопка
{
messagebox ("Нажата Кнопка");
GetWindowText(edit0, address(#text[0]), 99); // получить текст из edit0
messagebox ("Введённый текст: "+format(#text[0]));
}
}
function getmessage(WM_CLOSE)
{
UnregisterClass(address(#Class[0]), 0);
goto global end;
} |
|
|
Redear |
Отправлено: 01 Февраля, 2024 - 19:00:09
|
Мастер
Покинул форум
Сообщений всего: 202
Дата рег-ции: Июль 2022
Репутация: 0
|
Zireael пишет: CODE:#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define WS_BORDER 0x00800000
#define WS_EX_TOPMOST 0x00000008
#define WS_OVERLAPPEDWINDOW 0xCF0000
#define IDC_ARROW 32512
#define NULL 0
external(INT, "RegisterClass", "RegisterClassA", "User32.dll");
external(INT, "UnregisterClass", "UnregisterClassA", "User32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetModuleHandle", "GetModuleHandleA", "Kernel32.dll");
external(INT, "LoadCursor", "LoadCursorA", "User32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
int fon_color = rgb(255, 0, 255); // цвет фона диалога
char Class[99];
strcpy(#Class[0], "myclass");
int PWNDCLASS[10];//Структура WNDCLASS
int CLASS=address(#PWNDCLASS[0]);//Указатель на название класса
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру
PWNDCLASS[1] = address("WindowProc");
PWNDCLASS[5] = LoadIcon(GetModuleHandle(NULL), 128); // иконка
PWNDCLASS[6] = LoadCursor(0, IDC_ARROW);
PWNDCLASS[7] = CreateSolidBrush(fon_color); // цвет фона диалога
PWNDCLASS[9] = address(#Class[0]); // имя класса окна
if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать класс"); goto end;}
int Main = CreateWindow(WS_EX_TOPMOST, address(#Class[0]), "", WS_VISIBLE | WS_OVERLAPPEDWINDOW, 200, 100, 400, 300, 0, 0, 0, 0);
// создание контролов
int button0 = CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 80, 20, Main, 0, 0, 0);
int edit0 = CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD, 10, 40, 100, 20, Main, 0, 0, 0);
loop()sleep(10);
end:;
function getmessage(WM_COMMAND)
{
char text[99];
if (message.lparam==button0) //Если нажата кнопка
{
messagebox ("Нажата Кнопка");
GetWindowText(edit0, address(#text[0]), 99); // получить текст из edit0
messagebox ("Введённый текст: "+format(#text[0]));
}
}
function getmessage(WM_CLOSE)
{
UnregisterClass(address(#Class[0]), 0);
goto global end;
}
спасибо, это немного не то.
если создать чекбатон, получитя галка + текст на сером фоне. тоже самое со статиками |
|
|
Zireael |
Отправлено: 07 Февраля, 2024 - 13:15:49
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Кнопку можно нарисовать самому если нужно:
CODE:#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define WS_BORDER 0x00800000
#define WS_EX_TOPMOST 0x00000008
#define WS_OVERLAPPEDWINDOW 0xCF0000
#define IDC_ARROW 32512
#define NULL 0
#define BS_AUTOCHECKBOX 0x00000003
#define BS_OWNERDRAW 0x0000000B
#define PS_SOLID 0
#define PS_NULL 5
#define BN_CLICKED 0
#define BN_DOUBLECLICKED 5
external(INT, "RegisterClass", "RegisterClassA", "User32.dll");
external(INT, "UnregisterClass", "UnregisterClassA", "User32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetModuleHandle", "GetModuleHandleA", "Kernel32.dll");
external(INT, "LoadCursor", "LoadCursorA", "User32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
external(INT, "TextOut", "TextOutA", "Gdi32.dll");
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll");
external(INT, "SetBkColor", "SetBkColor", "Gdi32.dll");
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "MoveToEx", "MoveToEx", "Gdi32.dll");
external(INT, "LineTo", "LineTo", "Gdi32.dll");
int fon_color = 16567394; // цвет фона диалога
int PenFon = CreatePen(PS_SOLID, 1, fon_color);
int PenSOLID = CreatePen(PS_SOLID, 1, rgb(0, 0, 255));
int PenSOLID2 = CreatePen(PS_SOLID, 2, rgb(0, 0, 255));
int Brush = CreateSolidBrush(fon_color);
int BrushButton = CreateSolidBrush(rgb(255, 255, 255));
char Class[99];
strcpy(#Class[0], "myclass");
int PWNDCLASS[10];//Структура WNDCLASS
int CLASS=address(#PWNDCLASS[0]);//Указатель на название класса
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру
PWNDCLASS[1] = address("WindowProc");
PWNDCLASS[5] = LoadIcon(GetModuleHandle(NULL), 128); // иконка
PWNDCLASS[6] = LoadCursor(0, IDC_ARROW);
PWNDCLASS[7] = Brush; // цвет фона диалога
PWNDCLASS[9] = address(#Class[0]); // имя класса окна
if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать класс"); goto end;}
int Main = CreateWindow(WS_EX_TOPMOST, address(#Class[0]), "", WS_VISIBLE | WS_OVERLAPPEDWINDOW, 200, 100, 400, 300, 0, 0, 0, 0);
// создание контролов
int button0 = CreateWindow(0, "BUTTON", "", WS_VISIBLE | WS_CHILD | BS_OWNERDRAW, 10, 10, 70, 20, Main, 0, 0, 0);
int HDCbutton0 = GetDC(button0);
int button0State = 0;
loop()sleep(10);
end:;
function getmessage(WM_COMMAND)
{
if (message.lparam==button0 && hiword(message.wparam) == BN_CLICKED) // нажата галка
{
if(button0State)button0State = 0;
else button0State = 1;
}
}
function getmessage(WM_DRAWITEM)
{
// нарисовать галку
SelectObject(HDCbutton0, PenFon);
SelectObject(HDCbutton0, Brush);
Rectangle(HDCbutton0, 0, 0, 70, 20);
SelectObject(HDCbutton0, PenSOLID);
SelectObject(HDCbutton0, BrushButton);
Rectangle(HDCbutton0, 4, 4, 18, 18);
if(button0State) // если галка выбрана нарисовать её
{
SelectObject(HDCbutton0, PenSOLID2);
MoveToEx(HDCbutton0, 7, 9, NULL);
LineTo(HDCbutton0, 10, 14);
LineTo(HDCbutton0, 14, 6);
}
SetTextColor(HDCbutton0, rgb(255, 0, 0)); // цвет текста
SetBkColor(HDCbutton0, fon_color); // цвет фона
TextOut(HDCbutton0, 22, 3, "Галка", 5); // текст галки
}
function getmessage(WM_CLOSE)
{
UnregisterClass(address(#Class[0]), 0);
goto global end;
} |
|
|
|