将消息传给自己
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;