问题是sw_version[50]值怎么不是"0" 
我设置了断点,断点是按以下步骤执行的第一步:
BOOL CLCDDlg::OnInitDialog()
{
CDialog::OnInitDialog();

pmech->InitMech(this);}
第二步:BOOL CMechanism::InitMech(CWnd* pPortOwner)
{
Ptre = pPortOwner;

memset(sw_version,0,sizeof(sw_version)); return 1;我设置了断点到这里看了sw_version 值为全部"0";
}第三步:
BOOL CMyTabPage3::OnInitDialog() 
{
CDialog::OnInitDialog();
InitMechBaiscInfor();
return 1;}第四步:
void CMyTabPage3::InitMechBaiscInfor() 
{ UCHAR *get_version; 
CMechanism mech;
UCHAR i; 

get_version=mech.inspect_cd_basic_info(DISP_SW_VERSION); }第五步:
UCHAR *CMechanism::inspect_cd_basic_info(UCHAR baisc_info)
{ switch (baisc_info)
{
default:
return NULL;
break; case DISP_SW_VERSION:
return sw_version; //已经初始化过了,但里面的值变成了240 break; 
}}
没任何别的地方调用
如下:
Searching for 'get_version'...
C:\Documents and Settings\Administrator\桌面\Lcd-2\MyTabPage3.cpp(59): UCHAR *get_version; 
C:\Documents and Settings\Administrator\桌面\Lcd-2\MyTabPage3.cpp(63): get_version=mech.inspect_cd_basic_info(DISP_SW_VERSION);
C:\Documents and Settings\Administrator\桌面\Lcd-2\MyTabPage3.cpp(65): if(get_version[0])
C:\Documents and Settings\Administrator\桌面\Lcd-2\MyTabPage3.cpp(67): SetDlgItemInt(IDC_SW_VERSION,get_version[i]);
4 occurrence(s) have been found.

解决方案 »

  1.   

    好像还是这位老兄啊,老是搞不清楚类对象和类的区别。你的一个类的不同的对象实例之间,完全是独立的,不是一个东西,比如你在CLCDDlg中的pmech,不知道在哪里声明,但是CMyTabPage3::InitMechBaiscInfor() 中的CMechanism mech; 那就完全是一个新的对象实例,和CLCDDlg中的pmech无论如何扯不上关系。就是说你在CLCDDlg中调用pmech->InitMech(this); 和CMyTabPage3::InitMechBaiscInfor() 中的CMechanism mech之间,没有任何联系。
      

  2.   

    当然,我上面说的有一个例外,那就是类的静态成员变量,在任何地方都只有一份,那么还可以考虑。问题是,你的sw_version是静态成员吗?如果是,就检查执行的顺序吧。