logo
Литература_1 / photon_old

Пример – отображение меню

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

  1. В PhAB создайте модуль меню. Дайте ему имя, скажем my_menu.

  2. Создайте внутреннюю связь (см. раздел "Создание внутренних связей" настоящей главы), как описано выше. Для выпадающего меню, обычно Вам потребуется, чтобы модуль располагался относительно виджета либо относительно указателя мыши.

  3. Выберите виджет, связанный с меню. Убедитесь, что в его Pt_ARG_FLAGS установлен флаг Pt_MENUABLE и сброшен Pt_ALL_BUTTONS.

  4. Сгенерируйте код для Вашего приложения. PhAB создаст декларацию внутренней связи. В нашем случае она будет называться ABM_my_menu.

  5. Каждый виджет, являющийся потомком PtBasic, имеет ресурс Pt_CB_MENU, который представляет из себя список ответных реакций, вызываемых, когда Вы нажимаете правую клавишу мыши при указателе мыши на виджете. Отредактируйте этот ресурс и создайте функцию ответной реакции, подобную этой:

int text_menu_cb( PtWidget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t *cbinfo ) {

/* предотвращает предупреждения (варнинги) об отсутствии ссылок */

widget = widget, apinfo = apinfo, cbinfo = cbinfo;

ApCreateModule (ABM_my_menu, widget, cbinfo);

return( Pt_CONTINUE );

}

Параметр widget, передаваемый функции ApCreateModule(), используется, если меню позиционируется относительно виджета; аргумент cbinfo – если относительно указателя мыши.

  1. Скомпилируйте, слинкуйте и запустите Ваше приложение. Когда Вы нажмёте правую клавишу на виджете, появится Ваше меню.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4