У меня такие вопросы:
1) Как сделать чтоб функции
createdialog,
showdialog,
hidedialog,
destroydialog что нибудь возвращали (для проверок)? Или они не возвращают ничего?
2) Как альтернативно узнать статус немодального окна (показано/скрыто/несуществует)?
Я просто столкнулся с тем, что мне нужно циклично переназначать id двух окон кроме главного (для как бы увеличения их количества) и иногда одно из них убирать из этого цикла, оставляя для переназначения последнее (третье).
Сумбурно написал, но если бы я знал статус каждого немодального диалогового окна (показано/скрыто/несуществует) это бы очень помогло решить многие задумки. Может уже есть какая-то функция или опция для этого? или был бы возврат от этих функций бы... Что-то типа, скажем, функции, к примеру,
statusdialog:
CODE:if (statusdialog(0) < 0) // если окно с id=0 не создано
createdialog(0, ... bla ... | ... bla ... | ... bla ...); // то создать
пока как временное решение делаю так:
CODE:int status[3];
status[0] = -1;
// создаем окно 0 и присваиваем переменной status[0] то что оно создано
createdialog(0, ... bla ... | ... bla ... | ... bla ...);
status[0] = 0;
... // какой-то код
if (status[0] == 0) // если окно скрыто
{
showdialog(0, "Диалог", bla, bla, bla, bla, 0, 0); //то отобразить
status[0] = 1;
}
... // какой-то код
if (status[0] >= 0) // если окно существует
{
hidedialog(0); //то убить
status[0] = -1;
}
... // какой-то большой и запутанный код
if (status[0] < 1) // если окно убито или скрыто
{
createdialog(0, ... bla ... | ... bla ... | ... bla ...); //то создать/пересоздать
status[0] = 0;
}
Но это решение все равно не очень, так как если пользователь закроет или свернет немодальное окно из SystemMenu (нажмет на землю или крестик), то переменной значение передано не будет. То же касается и удаленного управления (из другой программы). Так что решение очень сомнительное. Вот если бы функции возвращали значения, это бы в данном примере проблему не полностью решило, но по крайней мере можно было бы уже пользоваться условиями типа:
CODE:if (hidedialog(0) == status[0]) { ... }
Собственно вот. Ответьте плз...
Ну и вот еще что... После перетаскивания окна например в угол или на другой монитор, и его скрывания любым способом, место расположения скидывается, и при отображении его showdialog'ом оно появляется снова в центре экрана (основного монитора). Это, конечно, мелочь, но когда работаешь в нескольких мониторах, кажется существенным...
(Добавление)
007wan пишет:
одно поле надо вставить путь к файлу "скрипт1" а во второй путь к файлу "скрипт2"?
причем если вставить путь к файлу "скрипт1" ,а в "скрипт2" не вставлять, то он будет выполнять операцию для "скрипта2" и наоборот.
Собственно так как Вы и написали. Добавьте BUTTON который будет обновлять информацию. При нажатии брать значение из CHECK, при ненахождении обращаться к второму скрипту. И наоборот. Смотрите примеры в постах выше (пример чата и пример с дочерним окном, и управления им из другого).
007wan пишет:
как сделать что бы при нажатии кнопки открывал блокнот? а то не работает
Ну и это тоже в примерах есть. Распишу навскидку, чтоб Вы сами нашли ошибку. Заранее сори за опечатки:
CODE:// подготавливаем диалоговое окно
int color, x, y;
int pos_size_button[1][4];
string text_button[1];
int flag_button[1];
pos_size_button[0][0]=10; pos_size_button[0][1]=20; pos_size_button[0][2]=110; pos_size_button[0][3]=40;
text_button[0]="Open notepad";
createdialog(0, BUTTON, #pos_size_button[0][0], #text_button[0], #flag_button[0]);
getdisplay (color, x, y);
showdialog(0, "Script to open a notepad", x/2-80, y/2-30, 160, 60, 1, 0);
enabletimer(0);
//зацикливаем скрипт
loop
{
sleep(20);
}
//отлавливаем события (нажатую кнопку)
//собственно тут основной код должен быть
CREATE_TIMER(0, 50)
{
if (flag_button[0]>0)
{
flag_button[0]=0;
start ("C:\Windows\System32\notepad.exe");
}
}
(Добавление)
Flash пишет:
собрал эти примеры чата, но сообщение не работают на Prog 1 вообще не оправляются ,а в Prog 2 пишет но сам себе , вообщем эти примеры на разных пк не работают, дело в порте ? если да то какой порт надо открыть.
Данный пример показывает обмен сообщениями на одном компьютере.
То есть это пример обмена данных между двумя программами установленными на одной машине.
Он и не должен работать на разных компах.
Для работы на разных компах, смотрите
writebuffernet и
readbuffernet (
Жмяк).
(Добавление)
Зафлудил свой вопрос ответами =(