IDC_EDIT1是我的edit control控件的名.
我要用GetDlgItemText把edit control里输入的内容得到.(问题在代码注释里边)char* fileBuffer = new char[LGM_FILE_STR_MAX];
char* edit_text = new char[LGM_FILE_STR_MAX];  //用来存edit control里的内容
LPTSTR temp = (LPTSTR)edit_text;GetDlgItemText(IDC_EDIT1,temp,LGM_FILE_STR_MAX);  /*第二个参数是LPTSTR的.  !调试到了这里发现,temp里取到了我输
                                                   入的"sssd",但是edit_text里只有第一个字母"s",怎样才能让
                                                   edit_text得到完整的字符串?
                                                  */
//edit_text = (char*)temp;
strncpy(fileBuffer,edit_text,LGM_FILE_STR_MAX);
fwrite(fileBuffer,sizeof(char),strlen(fileBuffer),fp);fclose(fp);
delete [] fileBuffer;
delete [] edit_text;(问题在代码注释里边)

解决方案 »

  1.   

    LPTSTR temp = (LPTSTR)edit_text;
    temp和edit_text指向同一块内存,怎么会内容不同呢。
      

  2.   

    char* fileBuffer = new char[LGM_FILE_STR_MAX];
    LPTSTR edit_text = new char[LGM_FILE_STR_MAX]; //用来存edit control里的内容GetDlgItemText(IDC_EDIT1,edit_text,LGM_FILE_STR_MAX);#ifdef _UNICODE
    WideCharToMultiByte( CP_ACP, 0, edit_text, -1, fileBuffer, LGM_FILE_STR_MAX, NULL, NULL );
    #else
    strncpy(fileBuffer,edit_text,LGM_FILE_STR_MAX);
    #endiffwrite(fileBuffer,sizeof(char),strlen(fileBuffer),fp);fclose(fp);
    delete [] fileBuffer;
    delete [] edit_text;
      

  3.   

    应该是unicode的问题,用TCHAR和_tcsncpy
      

  4.   

    应该是unicode的问题,把你的char换成 TCHAR,或者wchar_t就好了