Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
konctantin777
Отправлено: 20 Июня, 2023 - 10:30:55
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Здравствуйте.
Подскажите как правильно через редактор диалогов делать вкладки ? Т. е. можно кнопки как вкладки и, при нажатии, уничтожать диалог и открывать новый. Но каждый же будет как нулевой. Как тогда различать, например, чек 0 в 1м диалоге, во 2м, в третьем.... Проверять настройки тоже как ведь всегда будет flag_check(0)(0) во всех диалогах. Можно использовать разные диалоги 0,1,2, но их только три..
Как правильнее делать меню, чтобы были вкладки и читать, сохранять настройки.?
 
 Top
Zireael
Отправлено: 20 Июня, 2023 - 11:27:43
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Подскажите как правильно через редактор диалогов делать вкладки ?

Никак.
 Цитата:
Можно использовать разные диалоги 0,1,2, но их только три..

Можно создавать больше 3: Версия 5.87 Создание своих диалоговых окон с помощью WinApi

Вкладки можно создать, но в кибор это не удобно, нет структур, к тому же не все сообщения приходят.
 
 Top
konctantin777
Отправлено: 20 Июня, 2023 - 11:31:29
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Т.е. сейчас надо умещаться в 3 диалога и, например по кнопке, просто скрывать- показывать их ?
 
 Top
Zireael
Отправлено: 20 Июня, 2023 - 12:49:18
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Т.е. сейчас надо умещаться в 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);
}
 
 Top
konctantin777
Отправлено: 20 Июня, 2023 - 13:10:05
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Спасибо, буду разбираться )
Zireael , а этот код можно добавить к "Вашему" редактору диалогов ? Там вроде тоже function getmessage и визуально можно меню делать, а не подбором...
 
 Top
Zireael
Отправлено: 20 Июня, 2023 - 13:25:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




Создать нужные контролы в редакторе, получить код, из WM_CREATE скопировать создание контролов и вставить в функцию CreateWin(). Изменить gethwnd(0) на Win.
 
 Top
konctantin777
Отправлено: 20 Июня, 2023 - 13:26:37
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Спасибо !
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by