將消息傳給自己
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;