-2

下面的函数从文件中加载 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 来做到这一点。但只有字符串中的第一个字符到达那里。我应该怎么办?

4

1 回答 1

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")至到您的静态字符串。

于 2013-09-10T12:59:09.683 回答