2014-02-19 48 views
-2

我是vC++的新手,我正在創建一個win32窗口應用程序。我有我的視覺工作室創建的默認項目。通過代碼我發現MSG msg;。我搜索了很多關於它的用途以及它的參數是什麼意思。我在msdn中發現了一個非常簡短的描述。MSG結構的用途是什麼?參數代表什麼?

typedef struct tagMSG { 
    HWND hwnd; 
    UINT message; 
    WPARAM wParam; 
    LPARAM lParam; 
    DWORD time; 
    POINT pt; 
} MSG, *PMSG, *LPMSG; 

關於msg結構的參數和使用的描述對我來說很簡短。所以請任何人都可以向我反映。

+1

[概念:消息和消息隊列](http://msdn.microsoft.com/en-us/library/windows/desktop/ms632590%28v=vs.85%29.aspx) –

+0

刪除了'.net'標籤,添加了'winapi'標籤。 – crashmstr

回答

0

如果可能,您應該避免與此結構有任何關係。在Visual Studio C++中通常需要使用消息的是SendMessage()和PostMessage()函數,如果需要,可以使用這些函數生成消息,並在任何接收消息的消息中添加消息映射。消息映射將消息路由到一個特定的函數,該函數通常只能看到wParam和lParam消息參數,或根本沒有參數。有許多特殊的消息映射條目使用帶有消息中額外參數的函數,通常是pt。

如果您是確實在Win32級別編寫所有代碼,而不是使用MFC和消息映射支持,事情會變得更加困難!你需要的是一個處理髮送給給定窗口類型的消息的函數,它應該使用由消息值驅動的switch語句來調用消息特定的函數,通常將wParam和lParam傳遞給它們。 WindowProc上的文檔和谷歌搜索這個名字應該可以幫助你解決這個問題。

0

Windows使用MSG結構,多種東西傳遞給你的程序,包括按鍵,鼠標移動,點擊,您的Windows所做的更改等參數的用途是不同的消息不同,所以對你的細節需要查找特定的消息。您應該使用一本書或教程來向您展示創建Win API程序的基礎知識。在那裏你會遇到幾個你必須處理的示例消息。