VS2008中可以看到MFC有一个叫Split Button的控件,要想看它的效果,瞧下QQ那聊天窗口的"发送", "消息记录"这两个按钮就知道了.实际上就是还有点像Combo Box了.不过它的实现应该是button加menu.所以它的消息处理可以分开成button的处理和menu的处理
往dialog上拖一个split button后,再给它绑定一个变量.
CSplitButton m_sbSend;
DDX_Control(pDX, IDC_SPLIT1, m_sbSend);
因为说了split button实际上是button跟menu的组合.所以你得整个menu先.不是什么特殊的菜单,就是主页面常用的那种菜单.
m_split.SetDropDownMenu(IDR_MENU1,0); //添加split button的下拉菜单.第一个参数就是菜单的资源ID,第二个参数就是子项索引,就是菜单根项从左之右数过去了.我们这里只能用到它的一个子菜单.
消息处理
split button中按钮部分的消息处理跟一般按钮一样.
ON_BN_CLICKED(IDC_SPLIT1, OnBnClickedSplit1)
void CMFCControlDlg::OnBnClickedSplit1()
{
AfxMessageBox(_T("click split button"));
}
下拉菜单 的处理
split button中下拉菜单的处理也跟一般菜单类似
ON_COMMAND(ID_Split_Menu1, SendMsg)
void CMFCControlDlg::SendMsg()
{
AfxMessageBox(_T("Click dropdown menu of split button"));
}