Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » фон диалога

Страниц (2): « 1 [2]
 

11. Zireael - 31 Января, 2024 - 17:26:43 - перейти к сообщению
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;
}
12. Redear - 01 Февраля, 2024 - 11:00:09 - перейти к сообщению
 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;
}


спасибо, это немного не то.
если создать чекбатон, получитя галка + текст на сером фоне. тоже самое со статиками
13. Zireael - 01 Февраля, 2024 - 16:44:14 - перейти к сообщению
 Цитата:
если создать чекбатон, получитя галка + текст на сером фоне. тоже самое со статиками

У них собственный цвет фона.
Если нужен нестандартный интерфейс, то писать его придётся в длл, в кибор для этого нет функционала.
14. Zireael - 07 Февраля, 2024 - 05:15:49 - перейти к сообщению
Кнопку можно нарисовать самому если нужно:
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;
}

Powered by ExBB FM 1.0 Final