2 neverpassaway neverpassaway 于 2015.06.11 11:33 提问

如何实现CDialogEx::OnOK()中的传数据功能但又不关闭对话框?

请问大家,我有一个对话框类Display,其中一个函数给一个和变量赋了值,用了
CDialogEx::OnOK()把值传给View类中的DoModal,并在View类中有一个变
量来接收Display对话框中的变量的值。但是这样的话,每次Display对话框点了按钮
都会消失,如果不加CDialogEx::OnOK()又不能把值传到View中,请问该怎么实现
不关闭对话框,但是在View类中可以在每一次点击Display对话框按钮的时候获得值呢?
以下是代码:

 void Display::OnBnClickeddsift()
{
    // TODO: Add your control notification handler code here
    UpdateData();
    if (m_intDisp == 0){
        m_intSift = 1;
    }

    CDialogEx::OnOK();
}                                                          //Display对话框中按钮的代码


void CSIMSView::OnDisplay()
{
    // TODO: Add your command handler code here
    Display disp;

    if (disp.DoModal()==IDOK){
        m_IntDISP = disp.m_intDisp;
        if (m_IntDISP == 3 || m_IntDISP == 4)
            m_DSMAJOR = disp.m_dsMajor;
        Invalidate();                                     
    }
}                                                         //View类中Display对话框的代码,要求每次
                                                          //点击Display中的按钮都能把值传到View中

求各位大神解答!感激不尽!

3个回答

oyljerry
oyljerry   Ds   Rxr 2015.06.11 12:07
已采纳

获取View的句柄,然后自定义一个消息,对话框中PostMessage发送数据过去

u013147600
u013147600   2015.06.11 15:02

OnOK点击后会关闭是因为 默认给他的资源ID是IDOK 取消的是IDCANCEL 当点击按钮后调用endDialog()关闭对话框,你可以自己改变他的资源id就好了,然后自定义这个按钮的响应函数,在函数里传递你想要的数据信息

wd0033
wd0033   2015.06.11 11:41

为什么一定要用OnOK,直接sendmessage不是很好吗?

neverpassaway
neverpassaway 请问可否再指点一下具体怎么做==不是很懂==
2 年多之前 回复
neverpassaway
neverpassaway ==不会用。。之前没用过这个。。不过谢谢指点,我去查一下怎么用~
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片