C++ (MFC)的子窗口调用父窗口控件对象

C++ (MFC)的子窗口调用父窗口控件对象,第1张

你这种用法,就要保证m_tree在父窗口是public的,否则其他类中无法访问的,protected属性另当别论,此处无需讨论;一般情况下不推荐直接使用public属性定义成员变量,所以你给一个public属性的接口就好了:

// 定义在父窗口中

public:

void get_m_tree() { return m_tree; }; // 不要用void,换成m_tree的类型

// 或者最直接的

cstring get_selected_string() { return m_treegetcurtest(); };

#defing WM_MYMSG WM_USER+100

::PoseMessage(窗口句柄,WM_MYMSG, ……)

::SendMessage(窗口句柄,WM_MYMSG, ……)

也可以在主窗口中/父窗口中开启一个定时器和一个消息List

定时器去读取消息List并调用对应函数,并从消息List中移除已经处理了的消息

子线程负责把消息添加到消息List就可以了

添加和删除消息时,互斥一下,锁一下消息List,保证同一时刻,只有一个线程 *** 作

子窗体里的public partial class FormChild : Form下写

FormParent parent;

public FormChild(FormParent parent)

{

thisparent=parent;

}

调用父窗口的对象的话要把需调用的对象写成public

然后parent对象 就能点出来了

还有就是父窗体打开子窗体的时候需这样写FormChild child=new FormChild(this);

然后show出来就行了

你在创建子窗口的时候可以通过

构造函数

把父窗口的指针传给子窗口,比如:

CDlg

m_Dlg(this);

也可以在子对话框中用

GetParent

函数即时获取父窗口的指针或者

窗口句柄

通过获取到的指针或者窗体句柄就可以控制父窗口的控件了。

但通常的做法是获取父窗口的指针/句柄后给父窗口发个消息,让其在消息响应函数中做你想要他完成的工作,比如你说的改变控件的显示或者行为。

你预想的方式简单迅捷,但是不建议这么做,最好采用“给父窗口下命令

->

父窗口执行”方式

以上就是关于C++ (MFC)的子窗口调用父窗口控件对象全部的内容,包括:C++ (MFC)的子窗口调用父窗口控件对象、MFC 怎么在子线程中发送消息给父窗口调用父窗口的函数、VS2010, C#,子窗口如何获取其父窗口对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9320566.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存