WPARAM与LPARAM的疑惑
我看见一个托盘程序的例子,对自定义消息的WPARAM与LPARAM参数的值来自哪里
非常不解
程序大概是这样的
主程序MyDlg.cpp
1.自定义消息:#define WM_TRAY WM_USER + 100
2.函数原形:afx_msg LRESULT OnTrayNotify(WPARAM wParam,LPARAM lParam);
3.消息映射:ON_MESSAGE(WM_TRAY,OnTrayNotify)
4.原函数:
LRESULT CMyDlg::OnTrayNotify(WPARAM wParam,LPARAM lParam)
{
return m_tray.OnTrayNotify(wParam,lParam);
}
托盘类的实现程序Tray.cpp
1.成员函数:
int OnTrayNotify(WPARAM wID,LPARAM lEvent)
{
if(wID == TRAYNOTIFYDATA.uID)
return 0;
if(lEvent == WM_LBUTTONDOWN){
处理代码
}
else if(lEvent == WM_RBUTTONDOWN){
处理代码
}
return 0;
}
其主要功能是这样的:
当用户点击任务区的该应用的图标(托盘)时,如果是右键,
弹出用户自己定义的菜单,如果是左键,则执行弹出菜单的
第一项对应的单击处理函数
我的疑问是:在用户用鼠标单击托盘时,将执行
CMyDlg::OnTrayNotify(...)函数,然后将调用
CTray::OnTrayNotify(...)函数,但WPARAM与LPARAM的值
从何处来?
注:
1.程序运行良好。
2.创建托盘的程序未给出,需要提醒的是:
在创建托盘结构时,已有
TRAYNOTIFYDATA.uCallBackMessage = WM_TRAY;
3.有些语句可能记得不是很准确。
4.先谢谢各位帮忙