在用VC6写程序时,全局变量被莫名其妙改变,请各位大虾分析分析。//全局变量本体部分
BYTE BK_R=0;
BYTE BK_G=0;
BYTE BK_B=0;
//UINT TempBugForWindows=0;
UINT TimeInterval=0;//在StdAfx.h中,我包含了全局变量的外部声明
extern BYTE BK_R;
extern BYTE BK_G;
extern BYTE BK_B;
//extern UINT TempBugForWindows;
extern UINT TimeInterval;但是当我在程序中修改BK_G的值时,TimeInterval的值也会改变,但是当我加上上面被注销的变量
TempBugForWindows时,TimeInterval的值就不会被修改了。上面可能说的不够清楚,哪位大虾如果需要源码,告诉邮箱,给您发过去,帮忙分析。

解决方案 »

  1.   

    BK_G是用来保存一个EDIT控件的输入内容的。我的修改BK_G的代码如下。
    ((CEdit *)(GetDlgItem(IDC_BK_R)))->GetWindowText(StringAddr1);
    ((CEdit *)(GetDlgItem(IDC_BK_G)))->GetWindowText(StringAddr2);
    ((CEdit *)(GetDlgItem(IDC_BK_B)))->GetWindowText(StringAddr3);
    String = (LPCTSTR)(StringAddr1);
    sscanf(String,"%d",&(BK_R));
    String = (LPCTSTR)(StringAddr2);
    sscanf(String,"%d",&(BK_G));  //就在这一句修改了TimeInterval的值请大虾指正
      

  2.   

    ((CEdit *)(GetDlgItem(IDC_BK_R)))->GetWindowText(StringAddr1); 
    //???为什么不是
    CString str1;
    str1 = GetDlgItem(IDC_BK_R)->GetWindowText();BYTE RGB_R = atoi(str1);
      

  3.   

    把所有用了TimeInterval的地方都找出来。看看有没有不思议被执行的。
      

  4.   

    是这一句sscanf(String,"%d",&(BK_R));BK_R并不是整型所以向其写数据的时候写到下一个变量中了,也就是extern UINT TimeInterval当然如果两者之间加了TempBugForWindows就自然不会写到TimeInterval中了,TempBugForWindows做了牺牲品
      

  5.   

    多谢qwer9947(qwer) 的指点,我将BK_R改为int类型,这个问题解决了。下面将结帖给分。