一,建立一個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任何地方,都會彈出菜單,如下圖所示。

九,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;
菜單的界面有變化。