Die folgende Funktion lädt 2 Zeichenfolgen aus einer Datei:
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;
}
Ich möchte die beiden Saiten aus demDatei gehe zu den Textfeldern hEdit und hEdit2. Versuchen Sie das mit dem Sendmessage settext. Aber nur das erste Zeichen in der Zeichenkette kommt dort an. was soll ich machen?
Antworten:
0 für die Antwort № 1Wenn Sie nur einen Buchstaben haben, geschieht dies fast jedes Mal, weil Sie eine Unicode-Zeichenfolge an eine ANSI-Methode senden.
Der andere Weg zeigt Ihnen einige Kauderwelschergebnisse
Wenn Sie mit ANSI-Unterstützung kompilieren möchten
uses string and not wstring
Wenn Sie Unicode-Unterstützung wünschen
Fügen Sie die Unicode-Unterstützung hinzu, und geben Sie die 2 erforderlichen Werte an der richtigen Stelle ein (oberste Überschriften oder Projektoptionen).
#define UNICODE // for windows api unicode #define _UNICODE // for libc unicode tchar and _TEXT macro...
Danach sollten Sie ein. Hinzufügen
L"string"
oder_TEXT("string")
oder auch_T("string")
zu Ihren statischen Zeichenfolgen in Ihrem Code.