Четыре шага работы с 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));
И все!