這當然可以做到你的描述。實際上,您不需要在應用程序中爲通信創建自定義消息:只需確保發送消息的代碼和接收消息的代碼就消息號碼的實際內容達成一致,然後使用消息數字與Windows使用的任何數字不重疊。有一個RegisterWindowMessage()函數,但僅用於獲取在整個操作系統中唯一的消息號,以便用於進程間通信。
實現這只是有一個頭文件的某處包含自定義消息編號,以WM_USER開始和編號向上,像這樣簡單的方法:
#define WM_FIRST_CUSTOM_MSG (WM_USER+0)
#define WM_SECOND_CUSTOM_MSG (WM_USER+1)
的wParam和lParam類型定義,當你包括「windows.h」,所以在不同的系統上可以有不同的類型。對於32位操作系統,它們通常都是32位整數。如果您只是將這些信息用於測試目的,那通常足夠好,並且您可以隨意粘貼任何內容。不過,對於產品代碼,您應該更加小心:WPARAM確實用於「整型」數據,而LPARAM用於「指針式」數據。例如,在Win64中,LPARAM足夠長以容納64位指針,但WPARAM僅保存32位整數。爲了傳遞更多的數據而不僅僅是一個整數和一個指針,我會使用lParam來傳遞一個指向包含所有參數的某種結構的指針。
說了這麼多,聽起來像是一種調試輸出的複雜方式。您是否嘗試過使用OutputDebugString()API調用?或者調試線程的printf()調用?
在這種情況下,MessageBox不起作用嗎?你使用MFC嗎? – Klathzazt 2008-11-16 09:37:58
這不是一個選項。會有很多「字符串」 – Geo 2008-11-16 09:45:22