你读不到是什么意思?拿不到你想要的值?DEBUG 看你的全局变量在什么时候初始化的

解决方案 »

  1.   

    就是我在主窗体里: theApp.integer=1; 然后打开子窗体,这时候子窗体里print出来的integer的值是0 ,关掉子窗体,再打开一遍,print出来integer就是1了子窗体里面就两个按钮,什么都没写
      

  2.   

    我用fm.DoModal(); 打开子窗体以后,子窗体读不到这个全局变量...
    =====================================================
    看样子你是想在新的对话框类里面读。在这个新的对话框的cpp文件开头加
    extern int xxxxx
      

  3.   

    把这个全局变量改成主窗口类的静态成员变量static int i;在子窗体类的函数中“主窗口类:: i”来使用该变量。
      

  4.   

    你把integer作为CXXXApp的成员变量了吧?因为我看你是theApp.integer这么调用的,可能你子窗口用的时候,主窗口没有执行到integer=1。
    或者换成全局的试试
    stdafx.h:extern int integer;
    主窗口.cpp:全局定义int integer=0;
    ...
    需要改变integer值的地方(主窗口内任何位置)integer = 1;
    ...
    使用integer的值(子窗口):这里有值了吧
      

  5.   

    fm.DoModal() 会卡住你那个界面线程的。这个就是模态窗体的特性,一定要处理完才可以。可以用非模态的,就能动态交互了
      

  6.   

    非模态可以用消息来传递。模态的那个DoModal结束也可以传。
      

  7.   

    看你的描述, 好像是说在某个地方修改了那个全局int后, 对话框中没有改变, 就好像读不到那个int, 重新打开对话框后就看到数据又改变后的了, 就好像又读取到了.我猜:
          你传入对话框, 使用的是"值"传递, 导致对话框中得到的数据只是全局变量的副本, 所以不管你外面怎么改变那个全局变量, 那个副本是不会变的.建议: 
        1. 既然你都使用的全局变量, 为什么还要把它传入对话框呢?  全局变量,意思就是完全开放的, 到处都可以用. 对话框中直接用那个全局变量即可. 
        2. 实在要传入,也行, 那得使用指针, 或者引用, 不能传值.