昨天因为一个SendMessage的错误,调试了近一天时间,现把SendMessage的详细用法总结如下:
函数声明:
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAMwParam,LPARAM IParam)
参数的含义:
hWnd:其窗口程序将接收消息的窗口的句柄。
Msg:指定被发送的消息。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
传递消息主要分4步:
1)在类的定义中声明消息函数:afx_msgvoid AAA();
2)在相应的cpp文件中的MESSAGE_MAP区域内添加ON_MESSAGE(MESSAGE_ID,AAA),其中参数1为要传递消息的ID,参数2为刚刚声明的函数名称,不用带括号。
3)实现消息函数:在cpp文件中添加
LRESULT 类名::AAA(WPARAMwparam,LPARAM lparam)
{
执行内容
……
return 0;
}
4)发送消息:在需要发送消息的地方添加下列语句:
::SendMessage(m_hWnd,MESSAGE_ID,a,b);
其中,m_hWnd为接收消息的父窗口的句柄,调用该窗口的SendMessage函数,MESSAGE_ID为刚刚设定的消息ID,a、b是要传递的参数。