本人用的是MFC的对话框编程
在APP头文件中声明全局变量
extern int g_iScreenWidth ;     
extern int g_iScreenHeight;
在App.CPP文件中赋值
int  g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN);     
int  g_iScreenHeight = GetSystemMetrics(SM_CYSCREEN);刚开始运行程序g_iScreenWidth的值为1280,后来点击了几个按钮后g_iScreenWidth的值就变成了0,
我搜索了所以文件都没有改变g_iScreenWidth取值的语句存在
哪位大侠知道快帮帮忙啊

解决方案 »

  1.   

    先定义全局变量 int  g_iScreenWidth;
    再赋值
    g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN);    
      

  2.   

      行了,我把赋值语句放在主对话框的OnInitDialog函数中赋值就不会出错了
      

  3.   

        谢谢oyljerry 了,但为什么一定要这样呢?
      

  4.   

    应为您在APP中给全局变量赋初值,当程序运行一次APP文件,就给您的变量赋一次值,您建的应该是单文档文件,您应该在oncreat()函数中给变量赋值,对话框则在intoitdialog()函数中赋初值。
      

  5.   

         我建的是对话框,问题已经解决,但我想知道为什么不能在App.CPP文件中赋值,为什么 g_iScreenWidth的值会无缘无故变成了0.谁能给个好的解析我就给分!!
      

  6.   

    不用extern  也可以static int g_iScreenWidth ;    
    static int g_iScreenHeight; 放哪儿都能用
      

  7.   


    App.CPP文件中赋值 
    int  g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN);    
    这里不能有int,不然等于又定义了一个变量,而全局变量没有赋值,所以初始化为0
      

  8.   

    在APP头文件中声明全局变量 
    extern int g_iScreenWidth ; //!   
    extern int g_iScreenHeight; //!
    在App.CPP文件中赋值 
    int  g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN);    
    int  g_iScreenHeight = GetSystemMetrics(SM_CYSCREEN); 
      

  9.   

    在头文件定义全局变量,在cpp 文件又定义同名的局部变量,一会看全局变量,一会看局部变量,
    自己把自己搞乱! 戒之!
      

  10.   

      14楼理解错我的意思了,在头文件中只是声明了一个外部变量而已,正在的定义在App.CPP中
      

  11.   

     声明为int 又对这变量声明 . No No No