Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Т.е. сейчас надо умещаться в 3 диалога
Необязательно. Можно создать ещё одно окно для настроек.
CODE:#define WS_CAPTION 0x00C00000
#define WS_CHILD 0x40000000
#define WS_VISIBLE 0x10000000
#define WS_SYSMENU 0x00080000
#define WS_EX_TOPMOST 0x00000008
#define WS_EX_TOOLWINDOW 0x00000080
#define WS_OVERLAPPEDWINDOW 0x00CF0000
#define IDC_ARROW 32512
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, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "GetModuleHandle", "GetModuleHandleA", "Kernel32.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(0), 128); // иконка
PWNDCLASS[6] = LoadCursor(0, IDC_ARROW); // курсор
PWNDCLASS[7] = CreateSolidBrush(fon_color); // цвет фона диалога
PWNDCLASS[9] = address(#Class[0]); // имя класса окна
if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать класс"); goto error;}
int Win, button4, edit4; // переменные для окна настроек
int button0[3];
createdialog(0);
createdialog(1);
createdialog(2);
showdialog(0, "Окно 1", 10, 10, 200, 200, 4, 0);
loop()sleep(10);
end:;
UnregisterClass(address(#Class[0]), 0);
error:;
function getmessage(0, WM_CREATE)
{
button0[0] = CreateWindow(0, "BUTTON", "Окно 2", WS_VISIBLE | WS_CHILD, 10, 10, 80, 20, gethwnd(0), 0, 0, 0);
button0[1] = CreateWindow(0, "BUTTON", "Окно 3", WS_VISIBLE | WS_CHILD, 10, 35, 80, 20, gethwnd(0), 0, 0, 0);
button0[2] = CreateWindow(0, "BUTTON", "Настройки", WS_VISIBLE | WS_CHILD, 10, 60, 100, 20, gethwnd(0), 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==button0[0]) // если нажата кнопка
{
showdialog(1, "Окно 2", 10, 220, 300, 200, 0, 0);
return;
}
if (message.lparam==button0[1]) // если нажата кнопка
{
showdialog(2, "Окно 3", 10, 440, 300, 200, 0, 0);
return;
}
if (message.lparam==button0[2]) // если нажата кнопка
{
CreateWin();
return;
}
}
function getmessage(WM_COMMAND)
{
char TextEdit[999];
if (message.lparam==button4) // если нажата кнопка
{
GetWindowText(edit4, address(#TextEdit[0]), 999);
messagebox(format(#TextEdit[0]));
}
}
function getmessage(0, WM_CLOSE)
{
goto global end;
}
function CreateWin()
{
Win = CreateWindow(WS_EX_TOOLWINDOW, address(#Class[0]), "Настройки", WS_CAPTION | WS_SYSMENU | WS_VISIBLE, 400, 200, 400, 300, 0, 0, 0, 0);
// создание контролов
edit4 = CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD, 10, 10, 100, 20, Win, 0, 0, 0);
button4 = CreateWindow(0, "BUTTON", "Получить текст из Edit", WS_VISIBLE | WS_CHILD, 10, 40, 180, 24, Win, 0, 0, 0);
} |