CreateEvent
本身不過是一個宏觀#define
「d是的這是在WinAPI的的synchapi.h
#ifdef UNICODE
#define CreateEvent CreateEventW
#else
#define CreateEvent CreateEventA
#endif // !UNICODE
通常(至少在所有的Windows項目,我曾經工作)這實際上宣告了兩個函數之一UNICODE宏被定義,因此實際上可以與CreateEventW
函數一起使用,該函數接受LPCWSTR
(換句話說const wchar_t*
)字的參數,它應該是一個UTF-16字符串文字。 如果它沒有在你的項目中定義,那麼它使用CreateEventA
,它接受LPCSTR
參數(實際上相當於const char*
),並將其視爲ASCII字符串。
您的項目似乎已設置爲僅支持ASCII字符串。還有......好吧,現在這已經被棄用了:)以前有一些特殊的附加組件支持這種情況的構建,叫做MFC MBCS DLL Add-on。但是,我不是100%確定它仍然可用,這裏是a question here at StackOverflow about that。
如果您沒有找到這樣的插件或任何其他解決方案,那麼恐怕唯一的方法就是將它編譯爲Unicode字符串。實際上,即使您找到了解決方法,如果您要繼續維護此項目,我建議您將此活動添加到您的待辦事項中,因爲此類解決方法可能隨時停止存在。
無論如何,瞭解您的最終結果將會很有趣。
可能你覺得這有用:https://stackoverflow.com/questions/19715144/how-to-convert-char-to-lpcwstr –
你應該更新你的整個代碼庫以正確使用寬字符。其實這應該在15年前完成。 – VTT
「char *」在UTF-8上仍然是標準。大多數軟件工程師討厭「wchar_t *」併爲每個字符串表達式添加L.看起來像微軟是唯一一個強迫程序員使用UNICODE的人。微軟希望終止MBCS,但我認爲這不會很快發生。 – JazzSoft