case IDC_A:GetDlgItemText(hDlg,IDC_A,ch1,10);  //我想用这个static char ch1,获取按钮上的文字,为A;if(ch1 == "A")//判断这个按钮文字是A或者B
{
SetDlgItemText(hDlg,IDC_A,"B");// 是"A"的话,那么改变为B;然后设回"A",等待下一次使用
ch1 = "A";//这里有问题
}else {
SetDlgItemText(hDlg,IDC_A,"A");// 是B,就改变为A, 
ch1 = "B"; //这里有问题
}大概框架就是这样, 但是获取字符这里有问题, 用什么类型能够处理"="呢, GetDlgItemText的第三个参数又是LPCTSTR lpString类型, 
没有MFC的CString类, 那个类就好用很多,还能处理+=; 而且一般不用转换.char TCHAR ,string ,int,或者还有其他的类型, 转换起来好麻烦.int和char处理一些计算问题还行, 这个最简单, 但是处理字符和字符串之间,就不会了.

解决方案 »

  1.   

    CString ch1;
    GetDlgItemText(hDlg,IDC_A,ch1.GetBuffer(10),10);
    ch1.ReleaseBuffer();ch1 = "A";
      

  2.   

    CString 类型在sdk中怎么用的, 需要什么头文件吗? 我用CString出错的, ch1未定义;
      

  3.   

    static int i =1;.....
    case IDC_A: 
     if(i)
     {
    SetDlgItemText(hDlg,IDC_A,"B");// 
     }
    else
    {
    SetDlgItemText(hDlg,IDC_A,"A");// 
    }
    i++;
    i%= 2;就是交替效果嘛
      

  4.   

    CString包含在afx.h中,应该不用做额外工作,你说ch1未定义应该不是找不到CString造成的
      

  5.   

    3楼说的确实是能解决这个问题, 可是关键的字符串处理问题不解决,我以后也不会处理这个阿.不过还是感谢了 ,给分先.
    guo_wei 说的 CString, 但是afx.h是MFC的吧,我在SDK里边用不了,这个是大问题. 
    afxstr.h中找到这条:
    typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;
    afx.h包含也是出错的能不能具体说说CString能不能在SDK中使用,我只知道它是MFC的一个类, 包含了很多东西;
    这里不用CString行不行.
      

  6.   

    如果只是用char类型的话,可以这样
    memset(&a, 'A', sizeof(char));
    要用单引号
      

  7.   

    static char ch1[10]  ;
    case IDC_A:
    GetDlgItemText(hDlg,IDC_A,ch1,10);
    if(strcmp(ch1,"A")==0)
    {
      memset(&ch1,  'B', sizeof(char)); 
      SetDlgItemText(hDlg,IDC_A,ch1);
    }
    else 
    {
    memset(&ch1,  'A', sizeof(char)); 
    SetDlgItemText(hDlg,IDC_A,ch1);
    }综合楼上2位 ,大概就是这样子,编译通过,不知道2位大哥还有什么意见没. 非常感谢. 
      

  8.   

    为什么要memset,是字符串怎么办