2008-11-16 78 views
5

我們的項目在Windows CE 6.0上運行,並用C++編寫。我們的代碼存在一些問題,並且我們無法進行調試。我們還發現,如果在我們的應用程序中,我們創建線程並嘗試從它們中嘗試printf,則輸出不會顯示。唯一會出現的輸出是主線程中的輸出。我想做到以下幾點:我怎樣才能創建一個自定義的Windows消息?

  • 創建自定義Windows消息

  • 使用,因爲它是WPARAM一個字符的地址·我想在屏幕

  • 使用上顯示,因爲它是LPARAM *我想顯示屏幕

  • 對焦炭的長度發送消息

  • 處理它時,它打印字符*

如何創建自定義Windows消息? WPARAM和LPARAM有哪些類型?是否有可能做我剛剛寫的東西?

感謝

+0

在這種情況下,MessageBox不起作用嗎?你使用MFC嗎? – Klathzazt 2008-11-16 09:37:58

+0

這不是一個選項。會有很多「字符串」 – Geo 2008-11-16 09:45:22

回答

5

這當然可以做到你的描述。實際上,您不需要在應用程序中爲通信創建自定義消息:只需確保發送消息的代碼和接收消息的代碼就消息號碼的實際內容達成一致,然後使用消息數字與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()調用?

相關問題