1

无论从文件中检索到什么数据,我都需要在文本框中显示文本。

在 Windows 应用程序中按下特定按钮(IDB_SHOW_BUTTON)时,我正在执行以下操作:-

case IDB_SHOW_BUTTON:{  
   char buf[1000];  
   vReadFileFromHardisk(buf); //storing the read data of file to buffer
   SendMessage(editHwnd,WM_SETTEXT,NULL,(LPARAM)buf);//Due to this, I get junk text.
}
break;

我正在从文件中读取数据并将其存储到缓冲区中。我不明白为什么每次单击按钮时都会收到垃圾文本。

当我更改SendMessage的第四个参数时,即如下所述,我在按下特定按钮时得到正确的输出:-

SendMessage(editHwnd,WM_SETTEXT,NULL,(LPARAM)L"My First Edit Window");

请让我知道如何在将数据存储到buf并通过SendMessage发送相同的情况下显示正确的文本。

提前致谢。

4

1 回答 1

2

看到工作示例中的“L”了吗?您正在将一个窄字符串传递给一个需要 Unicode 的函数。

你需要要么

  1. 将您读入的文本转换为 Unicode - 您可以使用MultiByteToWideChar等来执行此操作;您需要知道输入的编码是什么,例如 UTF-8
  2. 发送消息的窄格式 WM_SETTEXTA,以对您已阅读的数据使用当前系统编码
  3. 将程序设置从 Unicode 更改为多字节(但不要这样做)

我强烈推荐 1 并习惯在整个程序中使用 Unicode(又名 UTF-16)。

于 2012-05-30T11:46:04.280 回答