注册 登录
编程论坛 VC++/MFC

周立功USBCAN测试软件vc6代码疑问

喜鹊王子 发布于 2013-02-28 15:43, 1449 次点击
只有本站会员才能查看附件,请 登录

这个是测试软件的界面,界面上也没有“确定”和“取消”按钮,那么在.cpp文件中的这两个函数有啥用呢?

void CTestDlg::OnCancel()
{
    // TODO: Add extra cleanup here
    int connect=m_connect;
    m_connect=0;
    if(connect)
    {
        Sleep(500);        
        VCI_CloseDevice(m_devtype,m_devind);
    }
    DeleteCriticalSection(&m_Section);//释放一个没有被任何线程所拥有的临界区对象的所有资源
    CDialog::OnCancel();
}

void CTestDlg::OnOK()
{
    // TODO: Add extra validation here
    int connect=m_connect;
    m_connect=0;
    Sleep(100);
    if(connect)
        VCI_CloseDevice(m_devtype,m_devind);//关闭设备
   
    DeleteCriticalSection(&m_Section);//释放一个没有被任何线程所拥有的临界区对象的所有资源
    CDialog::OnOK();
}
3 回复
#2
yuccn2013-02-28 16:56

OnOK 不一定就是确定按钮的事件函数的,看下cpp文件它关联着是那个控件(的ID),就知道是那个按钮了
没有没有关联,可以自己建立一个按钮,把函数和控件关联起来就行了
#3
喜鹊王子2013-02-28 17:59
回复 2楼 yuccn
在类向导中查看,OnOK()和OnCancel()函数并不是哪个按钮控件的,而直接是对话框本身的。
这样来讲的话,这两个函数在程序中也就不会被调用了。
#4
yuccn2013-02-28 18:40
回复 3楼 喜鹊王子
OnOK()和OnCancel() 是消息函数的,是和控件(说得根本一点是消息)关联的。点击按钮的时候,会产生消息,对应的消息处理函数就被执行了。
OnOK()、OnCancel() 这两个函数比较特殊,在MFC封装就关联的了。默认的对话框 是有IDOK 和IDCANCEL两个控件的,这两个控件(ID)在vs生成的代码中没有看到关联到这两个函数,因为封装起来了。

你可以试试给这个对话框增加两个按钮,并且把它的id改成IDOK 和IDCANCEL,就可以响应这两个函数了。

ps:windows程序的命名规则:On开头的函数都是消息处理函数的。

1