📄 menupage.cpp
字号:
CBCGMultiDocTemplate* pTemplate =
(CBCGMultiDocTemplate*) m_wndMenuesList.GetItemData (iIndex);
if (pTemplate != NULL)
{
ASSERT_VALID (pTemplate);
pTemplate->GetDocString (m_strMenuDescr, CDocTemplate::regFileTypeName);
hicon = AfxGetApp ()->LoadIcon (pTemplate->GetResId ());
if (hicon == NULL)
{
hicon = ::LoadIcon(NULL, IDI_APPLICATION);
}
hmenu = pTemplate->m_hMenuShared;
}
else
{
{
CBCGLocalResource locaRes;
m_strMenuDescr.LoadString (IDS_BCGBARRES_DEFAULT_MENU_DESCR);
}
CWnd* pWndMain = AfxGetMainWnd ();
if (pWndMain != NULL)
{
hicon = (HICON) GetClassLong (*pWndMain, GCL_HICON);
}
hmenu = m_pMenuBar->GetDefaultMenu ();
}
ASSERT (hmenu != NULL);
m_pMenuBar->CreateFromMenu (hmenu);
m_wndIcon.SetIcon (hicon);
m_hmenuSelected = hmenu;
UpdateData (FALSE);
}
//***********************************************************************************************
void CBCGMenuPage::OnDestroy()
{
UpdateData ();
CBCGPopupMenu::m_AnimationType =
(CBCGPopupMenu::ANIMATION_TYPE) m_iMenuAnimationType;
if (m_pMenuBar != NULL)
{
//------------------------------
// Save the selected menu state:
//------------------------------
if (m_hmenuSelected != NULL)
{
m_pMenuBar->OnChangeHot (-1); // To close and save all popups
g_menuHash.SaveMenuBar (m_hmenuSelected, m_pMenuBar);
}
//--------------------------
// Restore the current menu:
//--------------------------
if (m_hmenuCurr != NULL)
{
m_pMenuBar->CreateFromMenu (m_hmenuCurr);
}
}
//------------------------------------
// Release the context menu resources:
//------------------------------------
if (m_pContextMenu != NULL)
{
SaveMenu ();
m_pContextMenu->SendMessage (WM_CLOSE);
}
//--------------------------
// Update shdows appearance:
//--------------------------
CBCGMenuBar::EnableMenuShadows (m_bMenuShadows);
CPropertyPage::OnDestroy();
}
//************************************************************************************************
void CBCGMenuPage::OnSelchangeContextMenuList()
{
m_wndResetMenuButton.EnableWindow (FALSE);
if (g_pContextMenuManager == NULL)
{
return;
}
//----------------------------------------
// First, save and close the current menu:
//----------------------------------------
if (m_pContextMenu != NULL)
{
SaveMenu ();
CBCGPopupMenu* pMenu = m_pContextMenu;
m_pContextMenu = NULL;
pMenu->SendMessage (WM_CLOSE);
}
if (m_wndContextMenus.GetCurSel () <= 0)
{
//--------------------------------------
// No is menu selected, nothing to do...
//--------------------------------------
return;
}
UpdateData ();
HMENU hMenu = g_pContextMenuManager->GetMenuByName (m_strContextMenuName);
if (hMenu == NULL)
{
MessageBeep ((UINT) -1);
return;
}
HMENU hmenuPopup = ::GetSubMenu (hMenu, 0);
if (hmenuPopup == NULL)
{
ASSERT (FALSE);
return;
}
m_pContextMenu = new CBCGPopupMenu (this, m_strContextMenuName);
ASSERT (m_pContextMenu != NULL);
if (!globalData.bIsWindowsNT4)
{
m_pContextMenu->SetAutoDestroy (FALSE);
}
if (!m_pContextMenu->Create (GetTopLevelFrame (),
m_ptMenuLastPos.x, m_ptMenuLastPos.y,
hmenuPopup))
{
AfxMessageBox (_T("Can't create context menu!"));
}
else
{
m_wndResetMenuButton.EnableWindow ();
}
}
//************************************************************************************************
void CBCGMenuPage::CloseContextMenu (CBCGPopupMenu* pMenu)
{
if (m_pContextMenu == NULL)
{
return;
}
ASSERT(m_pContextMenu == pMenu);
SaveMenu ();
if (m_pContextMenu != NULL)
{
m_pContextMenu = NULL;
m_wndContextMenus.SetCurSel (0);
m_wndResetMenuButton.EnableWindow (FALSE);
}
}
//***********************************************************************************************
void CBCGMenuPage::SaveMenu ()
{
if (m_pContextMenu == NULL)
{
return;
}
//-----------------------------
// Save current menu position:
//-----------------------------
CRect rectMenu;
m_pContextMenu->GetWindowRect (&rectMenu);
m_ptMenuLastPos = rectMenu.TopLeft ();
//-------------------
// Save menu context:
//-------------------
g_menuHash.SaveMenuBar (m_pContextMenu->m_hMenu, &m_pContextMenu->m_wndMenuBar);
}
//***********************************************************************************************
void CBCGMenuPage::OnResetMenu()
{
if (g_pContextMenuManager == NULL)
{
return;
}
ASSERT (m_pContextMenu != NULL);
{
CBCGLocalResource locaRes;
CString strPrompt;
strPrompt.Format (IDS_BCGBARRES_RESET_MENU_FMT, m_strContextMenuName);
if (MessageBox (strPrompt, NULL, MB_YESNO | MB_ICONQUESTION) != IDYES)
{
return;
}
}
HMENU hMenu = g_pContextMenuManager->GetMenuByName (m_strContextMenuName);
if (hMenu == NULL)
{
MessageBeep ((UINT) -1);
return;
}
m_pContextMenu->m_wndMenuBar.ImportFromMenu (::GetSubMenu (hMenu, 0));
m_pContextMenu->RecalcLayout ();
m_pContextMenu->GetMenuBar ()->Invalidate ();
}
//*****************************************************************************************
void CBCGMenuPage::OnBcgbarresResetFrameMenu()
{
UpdateData ();
if (m_pMenuBar == NULL)
{
ASSERT (FALSE);
return;
}
int iIndex = m_wndMenuesList.GetCurSel ();
if (iIndex == CB_ERR)
{
ASSERT (FALSE);
return;
}
{
CBCGLocalResource locaRes;
CString strPrompt;
strPrompt.Format (IDS_BCGBARRES_RESET_MENU_FMT, m_strMenuName);
if (MessageBox (strPrompt, NULL, MB_YESNO | MB_ICONQUESTION) != IDYES)
{
return;
}
}
CBCGMultiDocTemplate* pTemplate =
(CBCGMultiDocTemplate*) m_wndMenuesList.GetItemData (iIndex);
if (pTemplate != NULL) // Document's menu
{
ASSERT_VALID (pTemplate);
HINSTANCE hInst = AfxFindResourceHandle (
MAKEINTRESOURCE (pTemplate->GetResId ()), RT_MENU);
BOOL bIsCurrent = (pTemplate->m_hMenuShared == m_hmenuCurr);
pTemplate->m_hMenuShared = ::LoadMenu (hInst, MAKEINTRESOURCE (pTemplate->GetResId ()));
m_pMenuBar->CreateFromMenu (pTemplate->m_hMenuShared, FALSE);
g_menuHash.SaveMenuBar (pTemplate->m_hMenuShared, m_pMenuBar);
if (bIsCurrent)
{
ASSERT (!m_bIsDefaultMDIMenu);
m_hmenuCurr = pTemplate->m_hMenuShared;
}
}
else // Frame's default menu
{
UINT uiDefMenuResId = m_pMenuBar->GetDefaultMenuResId ();
if (uiDefMenuResId != 0)
{
HINSTANCE hInst = AfxFindResourceHandle (
MAKEINTRESOURCE (uiDefMenuResId), RT_MENU);
HMENU hDefaultMenu = ::LoadMenu (hInst, MAKEINTRESOURCE (uiDefMenuResId));
m_pMenuBar->OnDefaultMenuLoaded (hDefaultMenu);
m_pMenuBar->CreateFromMenu (hDefaultMenu, TRUE);
g_menuHash.SaveMenuBar (hDefaultMenu, m_pMenuBar);
if (m_bIsDefaultMDIMenu)
{
m_hmenuCurr = hDefaultMenu; // By Steven Nies - 3.08.99
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -