我建立了一个MFC工程,添加了一个窗口,现在想在view和新建的窗口之间进行通信,google找了很多资料,一个都不可用!
具体描述如下:
    新建窗口中有一个static text控件,其ID为IDC_DISTANCE_STATIC,关联的变量为m_distance,现在我想在view中设置这个控制值,我首先在view中添加了一个窗口变量 CDistanceFrm disFrm,然后通过该变量来引用控件disFrm.m_distance.SetWindowText("dddd");这样编译能够通过,但是程序运行不了,一直提示出错,盼望高手赐教,不慎感谢,很着急,这个问题琢磨了一个下午了,看了所有google能找到的都不能用!不知道在view中怎么来和其他窗口中控件进行通信,这里我如果在新建窗口中添加一个公共变量test,使用disFrm.test却可以得到值,但是获取不到新建窗口中控件的值!

解决方案 »

  1.   

    添加了一个窗口变量 CDistanceFrm disFrm
    添加了窗口变量后,disFrm是否创建对应的对话框,只有创建了,你才能引用它的控件m_distance
      

  2.   

    我是通过别的按钮来创建并显示这个对话框的!
    CRuler* cRuler=new CRuler;
    cRuler->Create(IDD_RULER_DIALOG,this);
    cRuler->ShowWindow(SW_SHOW);
    在CRuler对话框中有tab控件,这个CDistanceFrm加载在tab中,这样CRuler创建并显示了,CDistanceFrm是不是也就创建了啊,只是通过别的按钮来进行创建的,应该是这个导致的问题!我想用一个指针只是不知道怎么做,盼回复!
      

  3.   

    你要通过cRuler 这个指针来访问你的对话框,然后再通过它访问CDistanceFrm等,同时CDistanceFrm也要创建,Create
      

  4.   

    我首先声明了CRuler* ruler;
    然后  ruler->distanceFrm.m_distance_.SetWindowText("ddd");
    这样引用编译能够通过,运行时候还是出错!不知道怎么回事
    CDistanceFrm 在ruler窗口的init中创建了啊:
    distanceFrm.Create(IDD_DISTANCERULER_DIALOG, GetDlgItem(IDC_TAB));
      

  5.   

    你这里怎么用ruler,你要你创建的那个啊
    Ruler* cRuler=new CRuler; 
    .....
    cRuler->distanceFrm.m_distance_.SetWindowText("ddd");
      

  6.   

    你不能
    CRuler* cRuler=new CRuler; 
    cRuler->Create(IDD_RULER_DIALOG,this); 
    cRuler->ShowWindow(SW_SHOW); CRuler* ruler; 
    然后 ruler->distanceFrm.m_distance_.SetWindowText("ddd"); 要把 CRuler 对话框的指针保存为 CXXXView 类 的成员啊!
      

  7.   

    明白了,创建Ruler* cRuler=new CRuler; 的时候给Ruler*设为共有变量,这样就可以通过类来引用这个指针了,也就是引用了刚刚创建的类了,谢谢各位的帮助!尤其谢谢oyljerry