當我們需要設置編輯框顯示文本的時候,如果其它方式無法實現,可以試試WM_PASTE 和 WM_CHAR。
但使用這兩種消息很容易出現中文亂碼的情況,那怎麼解決呢?
首先,要確定程序沒有寫錯!比如hwnd無效、焦點沒有在目標編輯框上等。
然後,確定英文是可以正常使用的。
在確定了上面2條之後,就基本可以確定亂碼是編碼問題了。
WM_PASTE關鍵點在於粘貼板數據的設置:
1,SetClipboardData 的數據格式應該設置爲 CF_UNICODETEXT
2,GlobalAlloc 最好設置爲 GMEM_MOVEABLE, 並且cpy字符串時要使用unicode編碼字符串。
WM_CHAR關鍵點:
1,原始字符串unicode類型
2,取出要發送的中文的時候直接取出完整漢字,不要按位。一個漢字只需要SendMessage一次!不要被抄來抄去的文章給忽悠了。
示例代碼: