对于界面上的诸多按钮,希望多个在被点击时由同一个过程来处理点击事件,由此想到了自定义 WindowProc。在这个自定义过程中希望能够捕获当前被点击的按钮的文字内容(这些都是数字,比如:计算器就是这样的),我们知道 WindowProc 的原型是这样的:LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);能否通过这里的参数 hwnd 来获取当前被点击的按钮本身??
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);能否通过这里的参数 hwnd 来获取当前被点击的按钮本身??
=======
可以啊,hwnd就是这个按钮窗口的句柄。
HWND hwnd, // handle to window
WM_COMMAND, // the message to send
WPARAM wParam, // notification code and identifier
LPARAM lParam // handle to control (HWND)
);所有的按钮点击消息都是WM_COMMAND,wParam的低字表示ID,你可以LOWORD(wParam),然后和你设定的ID比较就可以了,点击按钮时,wParam的高字表示notification ,HIWORD(wParam)=BN_CLICKED 就表示按钮被点击了
在回调函数里面
LRESULT CALLBACK MyProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
CButton *pBtn=CWnd::FromHandlePermanent(hWnd);
if(NULL != pBtn)
{
........
}
.....
....
}