基于MFC单文档程序的CheckBox运用

来源:互联网 发布:类似于沙盘的软件 编辑:程序博客网 时间:2024/04/29 11:38

首先,单文档程序不能像基于对话框程序一样直接把CheckBox拖到主界面中,必须自己手动创建,即靠代码写出来。

其次,MFC没有CCheckBox类,只有CListBox 和 CCheckLIstBox类,后两者相比, CCheckLIstBox 比 CListBox 多了复选框,因此这儿我们需要用到  CCheckLIstBox类。

具体实现步骤如下:

(1)在某视图cpp 中添加 复选框的ID,比如: IDC_CHECK_LIST_BOX = 1400;

(2)在类成员中添加该类,比如:CCheckListBox m_checkListBox;

(3)手动添加消息映射,位置在 BEGIN_MESSAGE_MAP(xx, xx) 和 END_MESSAGE_MAP()之间,

               比如:ON_CLBN_CHKCHANGE(IDC_CHECK_LIST_BOX, &xx::OnSelChangeCheckListBox)

(4)自定义消息响应函数,函数名就是 OnSelChangeCheckListBox,至于函数内容更具需要自己写,

        其中需要用的函数有,m_checkListBox.GetCurSel(); // 选择一共有几个下拉菜单

m_checkListBox.GetCheck(iSel); // 获取第 iSel 行的状态,即选中或未选中

(5)在类成员方法中,声明上面的消息相应函数,比如:afx_msg void OnSelChangeCheckListBox();

(6)当然还差最重要的一步,就是自己要创建这个CCheckListBox类,利用Create 函数,也很简单,一般放在OninitialUpdata中,比如:

         m_checkListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | WS_CHILD | WS_VISIBLE, CRect(10, iPanelHead + 30, 100, iPanelHead + 75), this, IDC_CHECK_LIST_BOX);

        同时添加这个list中的内容,比如:

m_checkListBox.AddString(" A");
m_checkListBox.AddString(" B");

(7)大功告成了!

我的程序实在Visual Studio2015中开发的,我想VS2008之后应该都包含以上的函数,也即是都可以按照我的流程实现的。

最后我再附图一张:

         

0 0
原创粉丝点击