我在一个类Ctest中定义的公共变量CString m_strPath,通过:
CFileDialog indlg(...);
...
m_strPath=indlg.GetPathName();
对m_strPath进行了赋值,为什么在其他cpp文件中通过
Ctest te;
引用te.m_strPath时,这个变量值为空呢?
还有为什么在StdAfx.h中定义“extern int a ”正确,而定义“extern CString a” 就会出错呢。对于像CString,DWORD类型的怎么定义全局变量呢?请哪位指点一下。
CFileDialog indlg(...);
...
m_strPath=indlg.GetPathName();
对m_strPath进行了赋值,为什么在其他cpp文件中通过
Ctest te;
引用te.m_strPath时,这个变量值为空呢?
还有为什么在StdAfx.h中定义“extern int a ”正确,而定义“extern CString a” 就会出错呢。对于像CString,DWORD类型的怎么定义全局变量呢?请哪位指点一下。
...
m_strPath=indlg.GetPathName();
这段代码应该放在枸造函数中
在CTestApp theApp下面加上CString g_strTest;
在CTestApp类的声明的后面,也就是TestApp.h的最后,加上extern CString g_strTest;这样的好处是你不用在其他cpp文件中用extern去声明外部变量了,因为App类的头文件默认是每个cpp文件都要包含的。
还请问jmshl,我在一个确定按钮里添加的那段代码,没有写在构造函数,这样的话没有办法在其他地方使用m_strPath吗?请指点一下,谢谢。
Ctest te;
引用te.m_strPath时,这个变量值为空呢?你搞错了一点,你在其他cpp文件里定义的Ctest,你确定,你用CFileDialog对它进行赋值了吗?
CFileDialog indlg;
m_strPath=indlg.GetPathName();好像是这个,现在没有源程序,具体我不记得了。
但是如jmshl所说我把CFileDialog那段代码放到构造函数里以后,在其他文件里访问m_strPath就不为空了。真是奇怪。还有,新遇到了一个问题。
对于ClistBox控件定义了两个变量m_ctrValue; m_strValue;
对鼠标选中某一行的事件SelChange编写函数:
m_ctrValue.SelCur();
我给忘了
m_strValue=选中的值
反正m_strValue在当前文件里测试不为空,为什么在其他文件里用时就是空呢。我已经把它定义成全局变量了。请给指点一下。
先得到Ctest的指针载引用
te-〉m_strPath