0
你好我需要使用彈出式菜單,女巫是動態創建的。MenuRef GetControl32BitValue總是返回0
OSErr err = GetBevelButtonMenuHandle(m_pRecallAOptionalButton, &m_pRecallAMenuRef);
for (countitem)
{
String szItem (List.GetAt(i));
CFStringRef sz = ToCFStringRef(szItem);
AppendMenuItemTextWithCFString(m_pRecallAMenuRef, sz, 0, 0, 0);
}
short sCount = CountMenuItems(m_pRecallAMenuRef);
SetControl32BitMaximum(m_pRecallAOptionalButton, sCount);
這沒關係,菜單顯示正確的項目數。我設定了最大值。
當我想要獲取所選項目索引時發生了我的問題。 對於這一點,我用的是kEventClassMenu事件& kEventMenuClosed樣
case kEventClassMenu:
{
MenuRef Menu;
GetEventParameter(inEvent, kEventParamDirectObject, typeMenuRef, NULL, sizeof(Menu), NULL, &Menu);
if (Menu && (Menu == pMainForm->m_pRecallAMenuRef))
{
SInt32 nIndex = GetControl32BitMaximum(m_pRecallAOptionalButton); // return the correct items count
nIndex = GetControl32BitValue(m_pRecallAOptionalButton); // always return 0 !!!!!
}
}
難道我錯過了什麼?這是正確的事件嗎?
非常感謝您的幫助。
謝謝,但這是我想避免(生成4個字符的代碼),我真的需要一個索引。 – Ziggy 2010-05-11 15:50:15
你錯過了一點:commandID只是一個32位int(UInt32)。雖然通常使用有意義的4字符代碼來創建使用界面生成器創建的菜單項,但如果最適合您,則無法使用順序整數。 – 2010-05-11 16:49:20
好的,謝謝你的建議,聽起來好像這樣:) – Ziggy 2010-05-14 07:17:56