CMDIFrameWnd::GetWindowMenuPopup
更新 : 2007 年 11 月
"ウィンドウ" と名付けられた現在のポップアップ メニュー (MDI のウィンドウ管理のためのメニュー項目を持つポップアップ メニュー) のハンドルを取得します。
virtual HMENU GetWindowMenuPopup(
HMENU hMenuBar
);
パラメータ
- hMenuBar
現在のメニュー バーを指定します。
戻り値
存在する場合は、ウィンドウ ポップアップ メニューを返します。それ以外の場合は NULL を返します。
解説
既定の実装では、ID_WINDOW_NEW や ID_WINDOW_TILE_HORZ のような標準のウィンドウ メニュー コマンドを含むポップアップ メニューを探します。
標準のメニュー コマンド ID を使わないウィンドウ メニューがある場合は、このメンバ関数をオーバーライドします。
使用例
// CMainFrame::OnActivateFirstMDIChild() is a menu command handler for
// CMainFrame class, which in turn is a CMDIFrameWnd-derived class.
// It looks for the caption of the first created MDI child window from
// the Window popup menu, and then activate the child window.
void CMainFrame::OnActivateFirstMDIChild()
{
// Get handle to the Window pop-up menu.
CMenu* menubar = GetMenu();
CMenu* wmenu = CMenu::FromHandle(GetWindowMenuPopup(menubar->GetSafeHmenu()));
if (wmenu == NULL)
return;
// Get the caption of the first created MDI child window.
CString caption;
if (!wmenu->GetMenuString(AFX_IDM_FIRST_MDICHILD, caption, MF_BYCOMMAND))
return;
// Get the actual name of the first created MDI child window by
// getting rid of the number and space, e.g. "&1 MDI 1".
int pos = caption.FindOneOf(_T(" "));
if (pos == -1)
return;
caption = caption.Right(caption.GetLength() - (pos + 1));
// Get the CWnd* of the first created MDI child window by comparing
// the caption of each MDI child window in the MDI application.
// Activate the first created MDI child window if found.
CMDIChildWnd* child = MDIGetActive();
do
{
CString str;
child->GetWindowText(str);
if (str == caption)
{
child->MDIActivate(); // or MDIActivate(child);
break;
}
child = (CMDIChildWnd*) child->GetWindow(GW_HWNDNEXT);
}
while (child);
}
必要条件
ヘッダー : afxwin.h