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