Диалоговые окна бывают модальными и немодальными. Их используют следующим образом:
Немодальные диалоговые окна используются так же, как обычные окна, за исключением того, что можно изменять размер и положение окна. В большинстве случаев рекомендуется использовать немодальные диалоговые окна.
Пример:
Полный код см.: awtk-c-demos/demos/normal_dialog.c
static ret_t on_yes(void* ctx, event_t* e) {
tk_quit();
return RET_OK;
}
static ret_t on_no(void* ctx, event_t* e) {
window_close(widget_get_window(WIDGET(e->target)));
return RET_OK;
}
static ret_t on_open_dialog(void* ctx, event_t* e) {
widget_t* dlg = dialog_create_simple(NULL, 0, 0, 240, 160);
...
return RET_OK;
}
Для модальных диалоговых окон необходимо вызвать функцию dialog_modal и дождаться выхода из диалогового окна. Функция dialog_modal будет блокироваться до тех пор, пока не будет вызвана функция dialog_quit.
При нажатии на кнопку, если нужно закрыть диалоговое окно, обязательно используйте функцию dialog_quit, а не закрывайте диалоговое окно напрямую!
Пример:
Полный код см.: awtk-c-demos/demos/modal_dialog.c
static ret_t on_yes(void* ctx, event_t* e) {
dialog_quit(widget_get_window(WIDGET(e->target)), DIALOG_QUIT_YES);
return RET_OK;
}
static ret_t on_no(void* ctx, event_t* e) {
dialog_quit(widget_get_window(WIDET(e->target)), DIALOG_QUIT_NO);
return RET_OK;
}
static ret_t on_open_dialog(void* ctx, event_t* e) {
int code = 0;
...
code = dialog_modal(dlg);
if(code == DIALOG_QUIT_YES) {
tk_quit();
}
return RET_OK;
}
В приведённом выше коде следующий код не будет выполняться до тех пор, пока кнопка не будет нажата и вызвана функция dialog_quit:
if(code == DIALOG_QUIT_YES)
Что касается модального диалогового окна, в функции обработки события кнопки подтверждения, помимо вызова функции dialog_quit, ничего делать не нужно! Логику обработки следует поместить после dialog_modal, и в соответствии с возвращаемым значением dialog_modal решить, что делать дальше.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )