ivantu |
Отправлено: 30 Августа, 2019 - 14:46:01
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
не могу правильную последовательность выбрать.
CODE:
int win_id;
createdialog(0);
createdialog(1);
createdialog(2);
showdialog(0, "bot", 100, 100, 500, 750, 3, 0);
//showdialog(1, "bot", 100, 100, 500, 750, 3, 0);
function showdialog_(int id, string w_name) {
destroydialog(id);createdialog(id);
showdialog(id, w_name, 100, 100, 500, 750, 3, 0);
win_id=id;
//Пробовал return , не знаю уместно ли...
//return win_id;
}
messagebox(format(win_id));
function getmessage(0, WM_COMMAND)
{
// Вызываю Диалог по нажатию на кнопку
if (message.lparam==tab[0][0]){showdialog_(1, "Тестовый");}
}
// Дальше по моей логики должен создаться диалог с ID переданным из функции с содержимым из WM_CREATE
function getmessage(0, WM_CREATE)
{
if(win_id==0){messagebox("Кнопка1"); return;} // если flag 0, то выполнить эту часть
if(win_id==1){messagebox("Кнопка2"); return;} // если 1, то выполнить эту часть
}
Где то в последовательности накосячил я по ходу, подскажите как исправить.(Отредактировано автором: 30 Августа, 2019 - 14:51:38) |
|
|
ivantu |
Отправлено: 30 Августа, 2019 - 15:33:48
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Zireael
CODE:#define WS_VISIBLE 268435456 // Видимый контрл
#define WS_CHILD 1073741824 // Дочернее окно
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int win_id;
int win_btn;
createdialog(0);
createdialog(1);
showdialog(0, "bot", 100, 100, 500, 750, 3, 0);
function showdialog_(int id, string w_name) {
destroydialog(id);createdialog(id);
showdialog(id, w_name, 100, 100, 500, 750, 3, 0);
win_id=id;
//Пробовал return , не знаю уместно ли...
//return win_id;
}
//messagebox(format(win_id));
function getmessage(0, WM_COMMAND)
{
// Вызываю Диалог по нажатию на кнопку
if (message.lparam==win_btn){showdialog_(1, "Тестовый");}
}
// Дальше по моей логике должен создаться диалог с ID переданным из функции с содержимым из WM_CREATE
function getmessage(1, WM_CREATE)
{
win_btn=CreateWindow(0, "BUTTON", "тыц", WS_VISIBLE | WS_CHILD, 50, 50, 89, 29, gethwnd(0), 0, 0, 0);
if(win_id==0){messagebox("Кнопка1"); return;} // если flag 0, то выполнить эту часть
if(win_id==1){messagebox("Кнопка2"); return;} // если 1, то выполнить эту часть
}
loop(){pause(100);} (Отредактировано автором: 30 Августа, 2019 - 15:49:30) |
|
|
ivantu |
Отправлено: 30 Августа, 2019 - 22:47:16
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
понял почему не получается, передается id диалога для создания, а вот эта чтуковина имеет статический ID и не может принимать переменную в первом параметре:
function getmessage(1, WM_CREATE)
из этого вывод... нифига у меня не получится создать разные диалоги с разным содержимым на лету... наверное
(Добавление)
Подскажите пожалуйста, почему win_id, не передается из функции после первого нажатия на кнопку, а только после второго?
CODE:
#define WS_VISIBLE 268435456 // Видимый контрл
#define WS_CHILD 1073741824 // Дочернее окно
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int win_id;
int win_btn, win_btn2;
createdialog(0);
showdialog(0, "bot", 100, 100, 500, 750, 3, 0);
function showdialog_(int id, string w_name) {
createdialog(1);
sleep(100);
showdialog(1, w_name, 100, 100, 500, 750, 0, 1);
win_id=id;
}
//messagebox(format(win_id));
function getmessage(0, WM_CREATE)
{
win_btn=CreateWindow(0, "BUTTON", "тыц", WS_VISIBLE | WS_CHILD, 50, 50, 89, 29, gethwnd(0), 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
// Вызываю Диалог по нажатию на кнопку
if (message.lparam==win_btn){showdialog_(1, "Тестовый");
}
}
// Дальше по моей логике должен создаться диалог с ID переданным из функции с содержимым из WM_CREATE
function getmessage(1, WM_CREATE)
{
win_btn2=CreateWindow(0, "BUTTON", "тыц", WS_VISIBLE | WS_CHILD, 50, 50, 89, 29, gethwnd(1), 0, 0, 0);
if(win_id==1){messagebox("Кнопка2");
messagebox(format(win_id));
}
}
loop(){
pause(100);
}
|
|
|
Zireael |
Отправлено: 31 Августа, 2019 - 02:09:32
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Подскажите пожалуйста, почему win_id, не передается из функции после первого нажатия на кнопку, а только после второго?
Потому что сначала вызывается createdialog(1), а только потом переменной присваивается значение win_id=id.
Несколько диалогов с разным количеством контролов (Отобразить)CODE:#define WS_VISIBLE 268435456 // Видимый контрл
#define WS_CHILD 1073741824 // Дочернее окно
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int button0[5], win_btn[9], win_id;
initialarray(#win_btn[0], 0);
createdialog(0);
createdialog(1);
showdialog(0, "Диалог0", 100, 100, 300, 300, 1, 0);
loop()sleep(100);
function showdialog_(int num_dialog, int pos_x, int pos_y, int id, string w_name)
{
destroydialog(num_dialog);
win_id=id;
createdialog(num_dialog);
showdialog(num_dialog, w_name, pos_x, pos_y, 300, 300, 4, 0);
}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==button0[0]){showdialog_(1, 400, 100, 0, "Диалог1"); return;}
if (message.lparam==button0[1]){showdialog_(1, 400, 100, 1, "Диалог1"); return;}
if (message.lparam==button0[2]){showdialog_(1, 400, 100, 2, "Диалог1"); return;}
if (message.lparam==button0[3]){showdialog_(2, 700, 100, 0, "Диалог2"); return;}
if (message.lparam==button0[4]){showdialog_(2, 700, 100, 1, "Диалог2"); return;}
}
function getmessage(0, WM_CREATE)
{
button0[0]=CreateWindow(0, "BUTTON", "Диалог1, с 1 кнопкой", WS_VISIBLE | WS_CHILD, 10, 10, 160, 29, gethwnd(0), 0, 0, 0);
button0[1]=CreateWindow(0, "BUTTON", "Диалог1, с 2 кнопками", WS_VISIBLE | WS_CHILD, 10, 50, 160, 29, gethwnd(0), 0, 0, 0);
button0[2]=CreateWindow(0, "BUTTON", "Диалог1, с 3 кнопками", WS_VISIBLE | WS_CHILD, 10, 90, 160, 29, gethwnd(0), 0, 0, 0);
button0[3]=CreateWindow(0, "BUTTON", "Диалог2, с 1 кнопкой", WS_VISIBLE | WS_CHILD, 10, 130, 160, 29, gethwnd(0), 0, 0, 0);
button0[4]=CreateWindow(0, "BUTTON", "Диалог2, с 2 кнопками", WS_VISIBLE | WS_CHILD, 10, 170, 160, 29, gethwnd(0), 0, 0, 0);
}
function getmessage(1, WM_CREATE)
{
if(win_id==0)
{
win_btn[0]=CreateWindow(0, "BUTTON", "Кнопка1", WS_VISIBLE | WS_CHILD, 10, 10, 89, 29, gethwnd(1), 0, 0, 0);
return;
}
if(win_id==1)
{
win_btn[1]=CreateWindow(0, "BUTTON", "Кнопка2", WS_VISIBLE | WS_CHILD, 10, 10, 89, 29, gethwnd(1), 0, 0, 0);
win_btn[2]=CreateWindow(0, "BUTTON", "Кнопка3", WS_VISIBLE | WS_CHILD, 10, 50, 89, 29, gethwnd(1), 0, 0, 0);
return;
}
if(win_id==2)
{
win_btn[3]=CreateWindow(0, "BUTTON", "Кнопка4", WS_VISIBLE | WS_CHILD, 10, 10, 89, 29, gethwnd(1), 0, 0, 0);
win_btn[4]=CreateWindow(0, "BUTTON", "Кнопка5", WS_VISIBLE | WS_CHILD, 10, 50, 89, 29, gethwnd(1), 0, 0, 0);
win_btn[5]=CreateWindow(0, "BUTTON", "Кнопка6", WS_VISIBLE | WS_CHILD, 10, 90, 89, 29, gethwnd(1), 0, 0, 0);
return;
}
}
function getmessage(2, WM_CREATE)
{
if(win_id==0)
{
win_btn[6]=CreateWindow(0, "BUTTON", "Кнопка7", WS_VISIBLE | WS_CHILD, 10, 10, 89, 29, gethwnd(2), 0, 0, 0);
return;
}
if(win_id==1)
{
win_btn[7]=CreateWindow(0, "BUTTON", "Кнопка8", WS_VISIBLE | WS_CHILD, 10, 10, 89, 29, gethwnd(2), 0, 0, 0);
win_btn[8]=CreateWindow(0, "BUTTON", "Кнопка9", WS_VISIBLE | WS_CHILD, 10, 50, 89, 29, gethwnd(2), 0, 0, 0);
return;
}
}
function getmessage(1, WM_CLOSE){destroydialog(1);}
function getmessage(2, WM_CLOSE){destroydialog(2);} |
|
|
|