1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zlgopen-awtk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
how_to_use_dialog.md 3.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:52 91e8897

Как использовать диалоговые окна

Диалоговые окна бывают модальными и немодальными. Их используют следующим образом:

1. Немодальные диалоговые окна

Немодальные диалоговые окна используются так же, как обычные окна, за исключением того, что можно изменять размер и положение окна. В большинстве случаев рекомендуется использовать немодальные диалоговые окна.

Пример:

Полный код см.: 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;
}

2. Модальные диалоговые окна

Для модальных диалоговых окон необходимо вызвать функцию 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zlgopen-awtk.git
git@api.gitlife.ru:oschina-mirror/zlgopen-awtk.git
oschina-mirror
zlgopen-awtk
zlgopen-awtk
master