/ / Setzen des Textfeldtextes mit Sendmessage settext sendet nur das erste Zeichen des Strings win32 c ++? - c ++, c, winapi, fstream

Setzen des Textboxtextes mit Sendmessage settext sendet nur das erste Zeichen der Zeichenfolge win32 c ++? - c ++, c, winapi, fstream

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 № 1

Wenn 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.