问题描述
- 如何实现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点击后会关闭是因为 默认给他的资源ID是IDOK 取消的是IDCANCEL 当点击按钮后调用endDialog()关闭对话框,你可以自己改变他的资源id就好了,然后自定义这个按钮的响应函数,在函数里传递你想要的数据信息
解决方案三:
为什么一定要用OnOK,直接sendmessage不是很好吗?
时间: 2025-01-20 19:23:12