如何实现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中
求各位大神解答!感激不尽!
答
获取View的句柄,然后自定义一个消息,对话框中PostMessage发送数据过去
答
为什么一定要用OnOK,直接sendmessage不是很好吗?
答
OnOK点击后会关闭是因为 默认给他的资源ID是IDOK 取消的是IDCANCEL 当点击按钮后调用endDialog()关闭对话框,你可以自己改变他的资源id就好了,然后自定义这个按钮的响应函数,在函数里传递你想要的数据信息