函數(shù)介紹:CButtonST應(yīng)用
DWORD CButtonST::SetMenu(UINT nMenu, HWND hParentWnd, BOOL bRepaint)
{
HINSTANCE hInstResource = NULL;
// Destroy any previous menu
if (m_hMenu)
{
::DestroyMenu(m_hMenu);
m_hMenu = NULL;
m_hParentWndMenu = NULL;
m_bMenuDisplayed = FALSE;
} // if
// Load menu
if (nMenu)
{
// Find correct resource handle
hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(nMenu), RT_MENU);
// Load menu resource
m_hMenu = ::LoadMenu(hInstResource, MAKEINTRESOURCE(nMenu));
m_hParentWndMenu = hParentWnd;
// If something wrong
if (m_hMenu == NULL) return BTNST_INVALIDRESOURCE;
} // if
// Repaint the button
if (bRepaint) Invalidate();
return BTNST_OK;
} // End of SetMenu
DWORD CButtonST::SetMenu(UINT nMenu, HWND hParentWnd, BOOL bWinXPStyle, UINT nToolbarID, CSize sizeToolbarIcon, COLORREF crToolbarBk, BOOL bRepaint) //除前兩個(gè)參數(shù),其他參數(shù)都有初始值
{
BOOL bRetValue = FALSE;
// Destroy any previous menu
if (m_menuPopup.m_hMenu)
{
m_menuPopup.DestroyMenu();
m_hParentWndMenu = NULL;
m_bMenuDisplayed = FALSE;
} // if
// Load menu
if (nMenu)
{
m_menuPopup.SetMenuDrawMode(bWinXPStyle);
// Load menu
bRetValue = m_menuPopup.LoadMenu(nMenu);
// If something wrong
if (bRetValue == FALSE) return BTNST_INVALIDRESOURCE;
// Load toolbar
if (nToolbarID)
{
m_menuPopup.SetBitmapBackground(crToolbarBk);
m_menuPopup.SetIconSize(sizeToolbarIcon.cx, sizeToolbarIcon.cy);
bRetValue = m_menuPopup.LoadToolbar(nToolbarID);
// If something wrong
if (bRetValue == FALSE)
{
m_menuPopup.DestroyMenu();
return BTNST_INVALIDRESOURCE;
} // if
} // if
m_hParentWndMenu = hParentWnd;
} // if
// Repaint the button
if (bRepaint) Invalidate();
return BTNST_OK;
} // End of SetMenu
通過(guò)
#ifdef BTNST_USE_BCMENU 來(lái)判斷選擇哪個(gè)函數(shù)。
程序過(guò)程:
頭文件:
CButtonST m_btnHelp;
源文件:
1)在當(dāng)前對(duì)話(huà)類(lèi)的初始化函數(shù)中添加:
OnInitDialog() m_btnHelp.SetIcon(IDI_HELP, (int)BTNST_AUTO_GRAY); //設(shè)置圖標(biāo),未點(diǎn)擊時(shí)變灰
m_btnHelp.SetTooltipText(_T("Help")); //輸出文字
#ifdef BTNST_USE_BCMENU
m_btnHelp.SetMenu(IDR_MENU, m_hWnd); //點(diǎn)擊時(shí)彈出菜單欄
#else
m_btnHelp.SetMenu(IDR_MENU, m_hWnd);
#endif
2)設(shè)置控件交換信息:
DoDataExchange(CDataExchange* pDX)函數(shù)中
DDX_Control(pDX,IDC_BUTTON1,m_btnHelp); //輸出
3)新菜單欄響應(yīng)函數(shù):
新建一菜單欄:IDR_MENUNEW,設(shè)置為POP-UP;
設(shè)置子菜單:IDR_ITEM1.點(diǎn)擊ClassWizard,選擇當(dāng)前文檔類(lèi)點(diǎn)擊ON_COMMAND設(shè)置響應(yīng)函數(shù)。