这个功能是我在做项目的时候的一个需求,这里有12个按钮,每一个按钮都要单独响应一下右键点击的消息。其实就是判断到底在那个按钮上点击了右键然后做不同的处理。废话不说了直接上代码吧
PreTranslateMessage(MSG* pMsg)首先要响应这个消息(pMsg这个指针保存许多有用的信息比如hwnd 就是被点击的窗口句柄也就是按钮的句柄,message当然就是右键点击的消息了WM_RBUTTONDOWN,wparam具体没有用过,LPARAM 是高位是x,低位是Y这个坐标是在当前控件的矩形范围内的x和y的信息而且不需要坐标系的转换。time不知道是干嘛的,pt也是一个x和y 的信息但是却不知道干嘛的)。
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
#ifdef _MAC
DWORD lPrivate;
#endif
} MSG
CWnd *pWnd = FromHandle(pMsg->hwnd);
int ID = pWnd->GetDlgCtrlID();
最有用的当然就是hwnd 这个句柄了我们可以使用Fromhandle转换为cwnd*然后在使用getdlgCTRLID来确定当前控件的ID有了这些当然就能为所欲为拉