Четыре шага работы с Popup Trigger
Первое: описание в .rcp. Обратить внимание, что LIST скрыт!
LABEL "Layout" AUTOID AT (5 PREVBOTTOM) FONT 1 POPUPTRIGGER "G700" ID MainLayoutPop AT (PREVRIGHT + 4 PREVTOP 40 12) LIST "Belkin G700" "Belkin G700/Swap" ID MainLayoutList AT (PREVLEFT + 13 PREVTOP + 5 AUTO 56) NONUSABLE POPUPLIST ID MainLayoutPop MainLayoutList
Второе: FormOpen выставляет текущее значение:
static void PrvSetPopup(Int16 sel, UInt16 listID, UInt16 popID){ ListType *listP = GetObjectPtrEx(listID, NULL); ControlType *ctlP = GetObjectPtrEx(popID, NULL); LstSetSelection(listP, sel); CtlSetLabel(ctlP, LstGetSelectionText(listP, sel)); } //... PrvSetPopup(prefs.curMap, MainLayoutList, MainLayoutPop); //....
Третье: обработка эвентов. Обратить внимание, что возврашается false
BEGIN_POP_MAP() HANDLE_POP_EVENT(MainLayoutPop, (UpdatePrefs(), false)); END_POP_MAP()
Четвертое: чтение текущего значения
prefs.curMap = LstGetSelection(GetObjectPtrEx(MainLayoutList, NULL));
И все!