获取垃圾文本。如何将字符数组变量转换为LPARAM类型?

时间:2012-05-30 11:34:19

标签: c++ windows char sendmessage

我需要在文本框中显示从文件中检索的任何数据。

在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 第4个参数时,即如下所述,我按下特定按钮时会得到正确的输出: -

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

如果要将数据存储到 buf 并通过发送消息发送相同文本,请告诉我如何显示正确的文字。

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

你需要

  1. 将您读过的文本转换为Unicode - 您可以使用MultiByteToWideChar等来执行此操作;你需要知道输入的编码是什么,例如: UTF-8
  2. 发送消息的缩写形式WM_SETTEXTA,对您已阅读的数据使用当前系统编码
  3. 将程序设置从Unicode更改为多字节(但不要执行此操作)
  4. 我强烈推荐1并习惯在整个程序中使用Unicode(a.k.a. UTF-16)。