以下函数从文件中加载2个字符串:
int loadsettings()
{
wstring a,b;
int retrn = 1;
wfstream myFile;
myFile.open ("settings.txt");
if ((!myFile.is_open())||(myFile.fail()))
MessageBox(NULL, "Error openning settings file!", "Error", MB_ICONINFORMATION);
else
{
if(myFile.fail())
{
myFile.close();
myFile.clear();
retrn = 0;
savedefault(); //creates a settings.txt with default values
myFile.open ("settings.txt", ios::in);
}
myFile >> b; //b becomes "user"
myFile >> a; // a becomes "password"
user = (LPARAM)b.c_str();
password = (LPARAM)a.c_str();
SendMessage(hEdit,
WM_SETTEXT,
NULL,
user); // sets the text box to "u"
SendMessage(hEdit2,
WM_SETTEXT,
NULL,
password); //sets the text box to "p"
myFile.close();
}
return retrn;
}
我想把从文件中取出的两个字符串转到文本框hEdit和hEdit2。尝试使用Sendmessage settext执行此操作。但只有字符串中的第一个字符才能到达。我该怎么办?
答案 0 :(得分:0)
当你只有一个字母时,它几乎每次都是因为你将一个Unicode字符串发送到ANSI方法。
另一种方式显示了一些乱码结果
如果要使用ANSI支持进行编译
uses string and not wstring
如果您需要Unicode支持
添加unicode支持在正确的位置执行2定义的需要(最顶部的标题或项目选项)
#define UNICODE // for windows api unicode
#define _UNICODE // for libc unicode tchar and _TEXT macro...
之后,您应该在代码中的静态字符串中添加L"string"
或_TEXT("string")
甚至_T("string")
。