2012-05-30 16 views
1

无论从文件中检索数据,我都需要在文本框上显示文本。获取垃圾文本。如何将字符数组变量转换为LPARAM类型?

在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并通过发送消息的情况下适当的文本。

在此先感谢。

+1

尝试使用SendMessageA(..)代替。也很适合检查编译器警告。 –

+0

@安德斯K:感谢它的工作 – Abhineet

回答

2

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

你要么需要

  1. 转换你读成Unicode文本 - 你可以做到这一点使用MultiByteToWideChar在其他之中;您需要知道输入的编码是什么,例如UTF-8
  2. 发送消息的窄格式WM_SETTEXTA,以使用当前系统编码读取的数据
  3. 将您的程序设置从Unicode更改为多字节(但不要这样做)

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

+0

感谢您的建议。如何使用MultiByteToWideChar?请给我看一个例子。再次感谢您的大力支持...... – Abhineet

+1

谢谢 - 对于这个例子我感到遗憾,我没有忘记,但最近我一直很忙: -//当我得到片刻时,我会回来一起扔东西。 – Rup

+0

感谢您的支持。 – Abhineet

相关问题