none
vc对话框间隔传值 RRS feed

  • 问题

  • 请问模态对话框的传值问题:A打开B,B打开C,C打开D,我想知道,怎么将B中的变量值传递给D中的变量来显示。由于数据比较多,不用static、全局变量行不行?

    还有就是回传:将D中的变量值传递给B。

    2010年3月25日 3:17

答案

  • 可以阿,在窗口B打开C的时候调用C的类里面的赋值函数,把数据放到C的成员变量里,然后C打开D时调用D的赋值函数把数据放到D的成员变量里.

    除此以外还可以用B发送自定义消息到D窗口来实现


    0xBAADF00D
    • 已标记为答案 神秘人 2010年3月26日 7:00
    2010年3月25日 8:22
    版主

全部回复

  • 可以阿,在窗口B打开C的时候调用C的类里面的赋值函数,把数据放到C的成员变量里,然后C打开D时调用D的赋值函数把数据放到D的成员变量里.

    除此以外还可以用B发送自定义消息到D窗口来实现


    0xBAADF00D
    • 已标记为答案 神秘人 2010年3月26日 7:00
    2010年3月25日 8:22
    版主
  • 版主:要按照你说的第一种方法,那我的D对话框中有20个变量需要传递给B,是不是我也要在C的类中定义20个变量来接收,然后再回传给B变量啊,要是这样的话,那不就是接力方式了吗?我的意思是可不可以省去C这个环节,直接实现将D中的20个变量赋给B。而不用static、全局变量

    另外,你说的第二种方法,没有试过。是不是给段代码看看啊。要是没有的话,我也只好用最土的第一种方法了。

    谢谢版主。

    2010年3月25日 10:21
  • #define UM_MYMSG  (WM_USER + 1)

    在你的发送对话框中可以

    SendMessage(对话框句柄,UM_MYMSG, (WPARAM)参数数组地址, 0);进行发送,注意参数的寿命,防止空指针。

    在需要接收的对话框响应这个消息

    case UM_MYMSG:

            把WPARAM传入的地址的数据保存到当前的对话框即可。

     


    0xBAADF00D
    2010年3月26日 16:27
    版主
  • 其实可以重载构造函数,将this指针传进去,A->B,B->C,C->D,这样不是很麻烦,只需要在构造的时候传参就好了。但是这么做没有Vonger的做法安全!

    2010年3月30日 3:12