一,新建一个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;
菜单的界面有变化。
源码下载: