visual c++ 中 怎样把子窗口传值到父窗口?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了visual c++ 中 怎样把子窗口传值到父窗口?相关的知识,希望对你有一定的参考价值。
一个很简单的实现:就是子对话向父对话框传递值,然后显示出来。
比如,主窗口中CWindowA 里面的成员变量m_gongzilevel
点击设置,弹出对话框B(B中有很多项,工资啊,级别等)
子窗口有CWindowB 里面有编辑框CComboBox m_level(输入或者选择工资水平)
点击B窗口中的确定后,A窗口中显示B中传回来的数值。
回答者用实例代码,不要说粗略的方法,我刚刚入门,多谢了。
CWindowB dlg;
if(dlg.DoModal()==IDOK)
this->m_gongzilevel = dlg.m_gongzilevel; //最好给B窗口中的控件弄一些CString的变量,
//这里dlg.m_gongzilevel是一个CString类型的变量
//或者其他variable的变量,而不是control的变量
......
this->UpdateData();
追问
可不可以不采用重载A窗口的办法啊,我刚才试了,我设置一工资以后,我先设置好的选项都没有了,只剩下了工资这个值,我再从别的对话框选择别的选项时,已选好的选项都没有了,有没有办法可以解决啊,感谢大侠
追答CWindowA::function()
CWindowB dlg;
dlg.m_gongzilevel = this->m_gongzilevel;//加上这个看看,不知道你是不是这个意思
......
if(dlg.DoModal()==IDOK)
this->m_gongzilevel = dlg.m_gongzilevel;
......
this->UpdateData();
对的,但是已经从B中传回来了,为什么A中对话框还不显示我在B中输入的值啊
追答A中调用UpdateData()了没?
追问已经调用了
参考技术A 在父类中调用弹出窗口的地方加代码;比如:
CWindowA:: FunctionTest()
// 这是父窗口的一个成员函数;
...
CWindowB dlgB;
dlgB.DoModal();
if(IDOK==dlgB.DoModal())
m_gongzilevel = dlgB.m_level; //将子窗口的值传回来;
visual C++ 创建一个窗口却无法显示窗口的原因是啥?
程序可以执行,可以再任务管理器中看到,但没有窗口显示,一直没找到原因,
我用了ShowWindow 这个函数,却一直无法显示,使用win32编的,这样的程序我写了很多了,没遇到过这种情况,不知道是什么原因
创建一个窗口首先需要定义一个窗口类,然后初始化相关事件,然后显示.
程序运行不运行和窗口是否显示没有任何关系. 程序运行时可以显示窗口也可以不显示.
建议你去买一本《WINDOWS程序设计》(微软出版社出的),该书是WINDOWS编程的圣经,如果你要用VC写WINDOWS程序,此书是必看的。该书用新手也能看懂的语言介绍了WINDOWS的整体框架和VC编程时涉及的基础知识。你应该好好读读这本书。 参考技术A ShowWindow调用后还要调用一次UpdateWindow才能显示窗口.
还有窗口回调函数中要有WM_PAINT及WM_CREATE消息处理. 参考技术B 代码? 参考技术C 窗口show了么?
mfc还是win32
以上是关于visual c++ 中 怎样把子窗口传值到父窗口?的主要内容,如果未能解决你的问题,请参考以下文章
showModalDialog/showModelessDialog实例,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口.关闭刷新父窗口