我这样定义的全局变量,在stdafx.h中声明了extern CPen* pppPen;然后在一个.cpp文件类外声明CPen* pppPen;
赋值
void CDrawDlg::OnTestButton() 
{
pppPen = new CPen(PS_COSMETIC,5,RGB(230, 120, 120));
}
然后在另外一个类函数中测试他
void CSnapPicDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
if(pppPen == NULL)
AfxMessageBox("null");
}
仍然为空,为什么呢?是不是我哪儿少写了东西?

解决方案 »

  1.   

    不要在头文件中声明它在DrawDlg.cpp中定义它
    在SnapPicDlg.cpp中用extern声明它然后看看OnTestButton和OnMouseMove哪个函数先调用,都设断点看谁先进去。
      

  2.   

    在SnapPicDlg.cpp中加入:extern CPen*pppPen;
      

  3.   

    看看OnTestButton和OnMouseMove执行顺序
      

  4.   

    信息不足
    可能:
    1,if(pppPen == NULL)写成if(pppPen = NULL)
    2,你定义了一个同名的变量.
    3,两个函数的调用顺序.
      

  5.   

    我还是有点晕,我这样定义和用全局变量,我这样定义的全局变量,在stdafx.h中声明了extern CPen* pppPen;然后在一个.cpp文件的类外声明CPen* pppPen;
    在函数中用和改变这个全局变量的时候,我是直接用pppPen开始操作还是必须在前面再声明一次extern CPen* pppPen;呢?谢谢
      

  6.   

    If there is not "extern CPen* pppPen" in included files,you should declare it as:extern CPen* pppPen;