因为在关闭时要对设备进行关闭,有一些代码。我先是重载了ok按钮,然后做了一个wm_close的消息响应函数,然后里面代码相同,结果相同。
我后来想省事,在ok函数里直接调用关闭函数,但是窗口却关不掉。
代码如下://ok按钮的响应函数
void Cgrab_MFCDlg::OnBnClickedOk()
{
        this->OnClose();
}void Cgrab_MFCDlg::OnClose()
{
if(bCameraOpen==TRUE)
{
res = PylonDeviceClose( hDev );
CHECK(res);
res = PylonDestroyDevice ( hDev );
CHECK(res);
free( imgBuf );
PylonTerminate();
}
CDialogEx::OnClose();
}我的想法是,onok函数调用onclose,和按叉是同样的效果。但是ok按钮关不掉。

解决方案 »

  1.   

    加上 CDialogEx::OnOK();
      

  2.   

    OnBnClickedOk 有消息映射吗?
    默认重载 OnOK 设备关闭的调用 建议重载 DestroyWindow  在其中进行, 这样模态/非模态的都可以调用到   
      

  3.   


    加上这句能执行吗?因为已经进入onclose,那么CDialogEx::OnClose();这行代码应该会关闭窗口吧?
      

  4.   


    试了确实可以了。
    有点没明白,按ok按钮,调用了onclose函数,onclose函数一旦执行,就是关闭窗口的吧?为什么还能返回去执行CDialogEx::OnOK(); 这句代码呢?