台灣最大程式設計社群網站
線上人數
2157
 
會員總數:245979
討論主題:189557
歡迎您免費加入會員
討論區列表 >> C/C++ >> cannot convert parameter 的字元錯誤問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
cannot convert parameter 的字元錯誤問題
價值 : 50 QP  點閱數:458 回應數:1
樓主

0123blue
門外漢
0 1
6 0
發送站內信




#define SendKey(Key) PostMessage(FindWindow("xxxxxxx", 0), WM_KEYDOWN, Key, (MapVirtualKey(Key, 0) << 16) + 1)
出現錯誤 FingWindowW :cannot convert parameter 1 from 'const char [16] to 'LPCWSTR'

搜尋相關Tags的文章: [ cannot convert parameter 的字元錯誤問題 ] ,
本篇文章發表於2018-03-24 01:52
1樓
回應

Raymond
檢舉此回應
FindWindow() 裡的字串用 _T() 來包:

絕大多數用到字串的視窗 API 都有兩個版本, 一個是 Unicode 版, 另一個是 非-Unicode 版。 以 FindWindow() 為例,真正的函式名字分別是 FindWindowW() 及 FindWindowA()。

也就是說,視窗函式庫裡根本沒有 FindWindow() 這個函式。 FindWindow 這個名字只是個 #define, 根據專案的字元類型設定,在編譯的時候把它轉為 Unicode 或 非-Unicode 版本的真實名字:


_T() 也是個 #define,它專門是用來處理 寬/窄 字元及字串的。

在 Unicode 的專案下,_T("xxx") 在編譯時會變成 L"xxx"。
在 非-Unicode 的專案下, _T("xxx") 會變成 "xxx"。

你會有上述的錯誤是因為 VC++20xx 的新創建專案,預設都是 Unicode 專案。

本篇文章回覆於2018-03-24 21:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.