天天看點

BCG菜單按鈕的簡單使用

一,建立一個BCG工程CBCGPMenuButton,基于對話框。

二,增加一個按鈕,并關聯一個CButton類型的變量m_btn1,然後手動将類型改CBCGPMenuButton成。

三,為這個按鈕增加響應事件。

void CCBCGPMenuButtonDlg::OnButton1() 
{
AfxMessageBox("士農學會!");
}      

四,F5運作,滑鼠單擊Btn1,看看結果。結果紋絲不動。

五,在CCBCGPMenuButtonDlg::CCBCGPMenuButtonDlg中将m_bDefaultClick設定為TRUE。

m_btn1.m_bDefaultClick = TRUE;

六,在增加一個按鈕并關聯CBCGPMenuButton類型的變量m_btn2。增加響應事件。

七,在CCBCGPMenuButtonDlg::OnInitDialog()中為m_btn2設定菜單。

static CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING,1,"士");
menu.AppendMenu(MF_STRING,2,"農");
menu.AppendMenu(MF_STRING,3,"工");
menu.AppendMenu(MF_STRING,4,"商");
m_btn2.m_hMenu = menu;      

八,點選btn2任何地方,都會彈出菜單,如下圖所示。

BCG菜單按鈕的簡單使用

九,btn2的響應函數如下:

void CCBCGPMenuButtonDlg::OnButton2() 
{
if( 1 == m_btn2.m_nMenuResult )
AfxMessageBox("士");
else if( 2 == m_btn2.m_nMenuResult )
AfxMessageBox("農");
else if( 3 == m_btn2.m_nMenuResult )
AfxMessageBox("工");
else if( 4 == m_btn2.m_nMenuResult )
AfxMessageBox("商");
if( m_btn2.m_bDefaultClick && 0 == m_btn2.m_nMenuResult )
AfxMessageBox("選擇階層");
}      

十,在增加一個按鈕并關聯CBCGPMenuButton類型的變量m_btn3。CCBCGPMenuButtonDlg::CCBCGPMenuButtonDlg中将m_btn3的m_bStayPressed 設定成FALSE。這樣按下的時候按鈕外表不會發生變化。

m_btn3.m_bStayPressed = FALSE;

十一,在CCBCGPMenuButtonDlg::CCBCGPMenuButtonDlg中

m_btn2.m_bOSMenu = FALSE;

菜單的界面有變化。

BCG菜單按鈕的簡單使用