注意:结合上一篇博客《activex控件的开发及测试过程,具体的开发步骤》http://blog.csdn.net/tongsean/article/details/40688749
之前的博客谢了关于activex控件的开发过程,但是这个过程是不完善的,并没有嵌入到相应的容器中进行测试。周末休息,出去玩了俩天。今天把之前的博客写完整,希望对学系的人在系统上有个整体的架构。在对开发的测试中,主要用的开发环境为vs2010,工程名为testocx。通过实现一个简单的加法计算,通过控件,将计算结果输出到相应的位置,实现对控件的简单调用。
运用MFC 编程绘制对话框及基本的控件和按钮的添加,主要是用到编辑框,单选按钮。通过点击确定(ok)按钮实现对控件的调用,实现控件中加法的运算,同时会触发事件,通过事件函数将计算的结果返回给容器,在编辑框中现实出来。具体的过程如下
首先,将编译好的控件插入到对话框的相应位置,为控件添加相应的变量m_ceshi1030,同时添加相应的时间映射函数(控件中的事件函数addresult对应于容器中的addeventctrl)。当控件中的事件触发函数调用的时候,将会调用容器中相应的事件函数。如下
<span style="font-size:18px;">BEGIN_EVENTSINK_MAP(CtestocxDlg, CDialogEx)
ON_EVENT(CtestocxDlg, IDC_CESHI_1030CTRL1, 2, CtestocxDlg::addresultctrl, VTS_I4)
END_EVENTSINK_MAP()</span>
其次,在主对画框上添加相应的文本控件用于接受输入的两个加数和求和的结果(后面的图中会有显示)
最后添加响应函数的代码。在ok按钮的位置添加响应函数,用于求和的结果并把结果输出到响应的位置,具体的代码如下:
确定按钮中的代码:
<span style="font-size:18px;">void CtestocxDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (m_add.GetCheck())
{
m_ceshi1030.add_ceshi(m_parm1,m_parm2);
}
//CDialogEx::OnOK();
}</span>
代码中的m_add.GetCheck()用来判定单选框的选定的,(这里只有一个单选框所以比较简单)。代码主要是实现将对话框中的两个数进行相加,并且相加后的结构会调用控件中的addresult函数,这个函数将会调用addeventctrl函数,将结果输出显示,代码如下:
<span style="font-size:18px;">void CtestocxDlg::addresultctrl(long parm)
{
// TODO: 在此处添加消息处理程序代码
m_result = parm;
UpdateData(FALSE);
//MessageBox(_T("计算的结果为:addresultctrl"));
}</span>
函数中的m_result为求和结果编辑框的变量,通过此变量将结果显示出来!具体的程序运行图如下图所示:图中椭圆形的地方就是我们自己开发的控件
如有什么遗漏的地方,欢迎大家留言,共勉。共同进步。