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

И все!