1

私はCMFCMenuButtonコントロールに不慣れです。これが私のコードですOnInitDialog()

// Load application list into menu button
m_ApplicationMenu = CreateMenu();   
m_MenuInfoSize = 2;
m_MenuInfo = new MENUITEMINFO[m_MenuInfoSize];
memset(m_MenuInfo, 0, sizeof(MENUITEMINFO) * m_MenuInfoSize);
UINT menuIndex = 0;
BOOL b; 
// 1st menu item
memset(m_MenuInfo + menuIndex, 0, sizeof(MENUITEMINFO));
m_MenuInfo[menuIndex].cbSize = sizeof(MENUITEMINFO);
m_MenuInfo[menuIndex].fMask = MIIM_ID | MIIM_STRING | MIIM_DATA;
m_MenuInfo[menuIndex].wID = menuIndex;
m_MenuInfo[menuIndex].dwTypeData = new WCHAR[10]; 
swprintf_s(m_MenuInfo[menuIndex].dwTypeData, 10, L"%s", L"A1");
m_MenuInfo[menuIndex].cch = wcslen(m_MenuInfo[menuIndex].dwTypeData) + 1;
b = InsertMenuItem(m_ApplicationMenu, menuIndex, TRUE, &(m_MenuInfo[menuIndex]));
menuIndex++;
// 2nd menu item
memset(&m_MenuInfo[menuIndex], 0, sizeof(MENUITEMINFO));
m_MenuInfo[menuIndex].cbSize = sizeof(MENUITEMINFO);
m_MenuInfo[menuIndex].fMask = MIIM_ID | MIIM_STRING | MIIM_DATA;
m_MenuInfo[menuIndex].wID = menuIndex;
m_MenuInfo[menuIndex].dwTypeData = new WCHAR[10]; 
swprintf_s(m_MenuInfo[menuIndex].dwTypeData, 10, L"%s", L"B2");
m_MenuInfo[menuIndex].cch = wcslen(m_MenuInfo[menuIndex].dwTypeData) + 1;
b = InsertMenuItem(m_ApplicationMenu, menuIndex, TRUE,  &(m_MenuInfo[menuIndex]));
menuIndex++;
// Attach menu to CMFCMenuButton
m_ApplicationList.m_bOSMenu = TRUE;
m_ApplicationList.m_bRightArrow = FALSE;
m_ApplicationList.m_bStayPressed = TRUE;
m_ApplicationList.m_bDefaultClick = FALSE;
m_ApplicationList.m_hMenu = m_ApplicationMenu;
    // Testing the constructed menu with the dialog's menu bar
::SetMenu(this->m_hWnd, m_ApplicationMenu);

アプリケーションを実行すると、CMFCMenuButtonクリックするとドロップダウンメニューが表示されました...しかし、これら2つの項目は空で、テキストも画像もありませんでした。

作成したメニューをテストするために最後の行を追加しました。2つの項目がメニューバーに正しく表示されました。

また、リソースエディタで作成したメニューを使ってみました。メニューバーには問題なく表示されましたがCMFCMenuButton、には再び空きスペースがありました。

私は何を取りこぼしたか?

4

1 に答える 1

2

試す

m_ApplicationMenu = CreatePopupMenu();

また、クリックイベントのを取得したい場合1は、最初に使用することをお勧めします。なぜなら:menuIndexm_nMenuResultCMFCMenuButton

CMFCMenuButton::m_nMenuResult

ユーザーがポップアップメニューから選択する項目を示す整数。

ユーザーが選択せずにメニューをキャンセルした場合、またはエラーが発生した場合、このメンバー変数の値はゼロになります。

于 2013-03-25T09:01:40.827 に答える