Специалист
Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019
Репутация: 5
|
Рекомендую изучить следующие темы, там много чего интересного (включая некоторые фишки):
Немодальные диалоговые окна
Получение и обработка сообщений в немодальных диалоговых окнах
Вопросы по external и др (1-5)
А так это можно сделать двумя способами: через таймер или winapi. Я предпочитаю второе (в примере оба варианта)
Code: (Отобразить)
CODE:external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
#define WS_CHILD 1342177280
int main_d; //будущий указатель на кнопку
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=53; pos_size_button0[0][1]=101; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20; //параметры кнопки
text_button0[0]="Кнопка 0";
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]); //создали диалог с кнопкой
showdialog(0, "Диалог", 835, 390, 250, 300, 1, 0);
enabletimer(0); //включили таймер
loop()sleep(10); //код зациклится тут
function getmessage(0, WM_CREATE){ //функция автоматически вызовется при создании дилога 0
main_d=CreateWindow(0, "BUTTON", "Кнопка 1", WS_CHILD, 12, 12, 75, 30, gethwnd(0), 0, 0, 0); //создаем кнопку
}
function getmessage(0, WM_COMMAND){
if(message.lparam==main_d)abc();
}
CREATE_TIMER(0, 10){
if(flag_button0[0]>0){
flag_button0[0]=0; //в кнопке стоит счетчик нажатий. Поэтому обнуляем нажатия
abc();
}
}
function getmessage(0, WM_MOVE){
//При перемещении диалога делает паузу в 100 мс вместо 10. Т.к при 100мс в loop не все нажатия успевает обработать
pause(100);
}
function abc(){
messagebox("hi"):
}
(Отредактировано автором: 30 Марта, 2020 - 08:30:59) |