我不董:postmessage()和sendmessage()里的参数如何用
解决方案 »
- 排序按钮
- 请教,怎么用最小的代价将一个简体版软件改称繁体版的。
- [找老乡]有在上海的河北人吗?请进http://www.yzchina.net/,谢谢!
- 刚刚切了项有建的卵蛋,请大家观摩!并庆祝这个轮子终于没有睾丸了!!!
- 关于24位色bmp与16位色bmp的相互转换
- CListCtrl里面增加内容后如何在视图中显示
- 我要来送分啊!!!!!!!!!~~
- 有在南昌搞开发的吗?聊聊!
- 两个时间结构体变量,如何计算时间差值(天数)...
- 请问如何编程确定是WindowsNT还是Windows2000?
- VC新手:怎样在第二次调用对话框时使下拉框只可读?在线等待!
- *.iso 是压缩文件吗?我用什么能打开它
______________
...
AfxGetMainWnd()->SendMessage( WM_USER_MSG1, 0, 0 );
_________
*.h
afx_msg LRESULT OnUSERMSG1(WPARAM wParam,LPARAM lParam);
___________
*.cpp
...
BEGIN_MESSAGE_MAP(CMainFrame, CNewMDIFrameWnd)
ON_MESSAGE(WM_USER_MSG1,OnUSER_MSG1)
END_MESSAGE_MAP()
...LRESULT CMainFrame::OnUSER_MSG1(WPARAM wParam,LPARAM lParam)
{
... return 0;
}
第一参数是消息,它标示这个消息是什么意思。如果是自定义消息的话填个数就可以了。第二和第三个参数是消息的具体参数值,这要视具体的消息而定,比如要是WM_MOUSEMOVE,的话参数就是鼠标位置的指针了。
给个例子this->PostMessage (1976,0,0);
这个意思就是说向本实例(可能是窗口也可能是按钮。总之是个窗口类)投一个值为1976的消息。
如何接收消息就是楼上那几句话,其意是当收到WM_USER_MSG1这个消息时,则调用OnUSER_MSG1 并将postmessage的后两个参数分别传给wParam,lParam.
按照上面的例子就是
...
ON_MESSAGE(1976,OnMyMsg)
...LRESULT CMainFrame::OnMyMsg(WPARAM wParam,LPARAM lParam)
{
... return 0;
}
#define MY_MSG _T("{11111111-2222-BBBB-AAAA-00B0ec384bab}")//定义消息
static UINT uMsg;//消息变量
afx_msg LRESULT OnMY_MSG(WPARAM wParam, LPARAM lParam);//消息处理函数声明UINT myDlg::uMsg= RegisterWindowMessage(MY_MSG);//注册消息变量
LRESULT myDlg::OnMY_MSG(WPARAM wParam, LPARAM lParam)//消息函数
{
//do....
//return;
}ON_REGISTERED_MESSAGE(uMsg, OnMY_MSG)//消息绑定;消息发送方:
#define MY_MSG _T("{11111111-2222-BBBB-AAAA-00B0ec384bab}")//定义消息nMsgID = RegisterWindowMessage(MY_MSG);
::PostMessage(HWND_BROADCAST, nMsgID, 0,0);//广播发送
当然,你那样是非常非常实用的。
至少,我那样的做法在ClassWaird里是看不到的。
1,自定义消息,#define MESSAGE WM_USER + 1000
2, 定义函数(在你的窗口类中,该类有窗口句柄) void HandleMessage(WPARAM wparam,LPARAM lparam)
3,在该类中定义消息映射: ON_MESSAGE(MESSAGE,HandleMessage)
4,SendMessage(m_hWnd,MESSAGE,0,0);
m_hWnd为2中类的窗口句柄。
如果你想传递字符串的话,这样子
SendMessage(m_hWnd,MESSAGE,0,,(LPARAM)(LPCSTR)str);在HandleMessage中这样:
CString temp = (CString)(LPCSTR)lParam
彼此 的 消息响应是程序通信?
LRESULT 参数 怎么用还有 WPARAM LPARAM