窗口间变量传递

来源:互联网 发布:淘宝快递助手功能 编辑:程序博客网 时间:2024/05/25 12:22

虽然没碰到过多少,至少现在遇到了以下几种变量传递的情况:1。主窗口向子窗口传递;2。子窗口向主窗口传递;3。子窗口间互相传递;下面分别介绍。

一、主窗口向子窗口传递变量

     1、 在主窗口中如是全局变量,可在子窗口中直接用extern声明而在子窗口中直接用,前提是必须包含主窗口的头文件。例如:主窗口CMainDlg,子窗口CSub,在主窗口中定义全局变量int temp;temp = 22;,可在CSub中直接用extern int temp;然后随便自己怎么去用.

     2、在主窗口中如是成员变量或成员函数,则可以直接用CMainDlg *parent = (CMainDlg*)GetParent();然后parent->*******就可以了。

     3、CMainDlg创建CSub,CSub创建CSubSub,则在CSubSub中也可以用CMainDlg *parent = (CMainDlg*)GetParent();来调用CMainDlg中的函数与变量,方法同2。

二、子窗口向主窗口传递变量

    CSub dlg;  dlg.m_temp = &m_main_temp;  dlg.DoModal();   其中m_temp是CSub中定义的public的指针,m_main_temp是CMainDlg中public的成员变量,它们的类型要保持一致。不过这种传递方法是在子窗口关闭后变量值才能传到主窗口中。

三、子窗口间变量传递

      如是全局变量,可直接用extern来声明,方法和上面的一样。如果不是全局变量,则需要得到相应对话框的指针或句柄,然后用指针或句柄去操作其中的变量或函数。如

HWND hwnd;
hwnd=::FindWindow(NULL, "关机或重启");     //找到对话框标题为“关机或重启”的对话框
CWnd *p=FromHandle(hwnd);
p->***************;

其实传递变量的方法很多,可以通过发送消息;可以在子窗口中保存主窗口句柄,利用此句柄访问;可以在主窗口中保存子窗口句柄,主窗口调用此句柄方法也就是子窗口的put方法传递;可以在子窗口的构造函数中传递一个参数,在主窗口构建子窗口的时候传进去。这里只介绍了其中的一点点,有需要的朋友可以自己去研究,呵呵……另外附上几个我以前用MFC时发的帖子,希望对大家有所帮助。

http://community.csdn.net/Expert/topic/5369/5369722.xml?temp=.3070032

http://community.csdn.net/Expert/topic/5421/5421410.xml?temp=.741482

http://community.csdn.net/Expert/topic/5421/5421598.xml?temp=.6908838

http://community.csdn.net/Expert/topic/5376/5376157.xml?temp=.8486139

原创粉丝点击