將消息傳給自己

將消息傳給自己
1.自我傳遞消息,有兩種方式實現這項工作:
SendMessage()--直接向窗口傳遞一個要處理的消息。如果接受窗口已經處理了該消息,在WinProc之後該函數返回。
PostMessage--向窗口傳遞一個消息序列並且直接返回。如果不在意處理消息的時間延遲,或者該消息優先級較低,可以使用該函數。
(函數原型請查閱MSDN)

2.如果PostMessage()成功的話,將返回一個非零值。注意這一點和SendMessage()不同。因爲,SendMessage()實際上調用WinProc(),而PostMessage()只是將一個消息不經處理就放到接收窗口的消息序列中

3例子: if(KEYDOWN(VK_ESCAPE))
    {
     SendMessage(hwnd,WM_DESTROY,0,0);
    }
       注意:KEYDOWN()是自己編寫的一個宏調用,返回值說明該鍵是否被按下。

4另一種創建自己定義消息的方式:WM_USER
例子:假如你要使用WM_USER消息來爲內存管理系統創建大量的虛擬消息
#define ALLOC_MEN 0
#define DEALLOC_MEN 1

//send WM_USER message,use the lparam as amount of memory
//and the wparam as the type of operation

SendMessage(hwnd,WM_USER,ALLOC_MEM,1000)

然後在WinProc()中可以這樣做:
case WM_USER:
{
//what is the virtual message
switch(wparam)
    {
        case ALLOC_MEN:{}break;
        case DEALLOC_MEN:{}break;
        //..more messages
    }
}break; 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章