原来在主窗口类的注册时加了回调函数
WNDCLASS wc; wc.style = CS_HREDRAW |
CS_VREDRAW; /* redraw if size changes */
wc.lpfnWndProc = MainWndProc; /* points to window proc. */MainWndProc里可以响应鼠标的消息。
但是在主窗口上CreateWindowEx创建一个ListCtrl窗口后,程序对鼠标的消息不能响应
如何在ListCtrl中加入MainWndProc的响应方法
WNDCLASS wc; wc.style = CS_HREDRAW |
CS_VREDRAW; /* redraw if size changes */
wc.lpfnWndProc = MainWndProc; /* points to window proc. */MainWndProc里可以响应鼠标的消息。
但是在主窗口上CreateWindowEx创建一个ListCtrl窗口后,程序对鼠标的消息不能响应
如何在ListCtrl中加入MainWndProc的响应方法
LONG SetWindowLong (HWND hWnd, int nIndex, LONG dwNewLong);
将我的ListCtrl重新指定消息处理函数,
但是重新指定后,ListCtrl中的内容却刷没了 显示为空白, 头痛啊!!!!!
是这样么?
while (GetMessage(&msg, (HWND) NULL, 0, 0)) {
TranslateMessage(&msg);
if (msg.message == (WM_LBUTTONDOWN | WM_RBUTTONDOWN
| WM_MOUSEMOVE |WM_LBUTTONUP | WM_RBUTTONUP)) {
// 控件窗口
PostMessage(mListctrl, msg.message, msg.wParam, msg.lParam);
}
else if (msg.message == WM_PAINT) {
// 主窗口
PostMessage(mMainWnd, WM_PAINT, msg.wParam, msg.lParam);
}
else {
DispatchMessage(&msg);
}
SetWindowLong(mListctrl, GWL_WNDPROC, MainWndProc);
但是重新指定后,ListCtrl中的内容却刷没了 显示为空白
SetWindowLong(mListctrl, GWL_WNDPROC, CtrlWndProc); 后在CtrlWndProc 中 return MainWndProc( hwnd, message, wParam, lParam);?
MainWndProc为主窗口的WindowProc
MainWndProc为主窗口的WindowProc CtrlWndProc为控件窗口的WindowProc 我是这么重设ListCtrl的WindowProc。
SetWindowLong(mListctrl, GWL_WNDPROC, CtrlWndProc); 你说
重设WindowProc后,在自己的WindowProc中处理完后要调用原来的WindowProc也就是说在控件的回调函数CtrlWndProc中处理完后调用主窗口的回调函数MainWndProc是我这么理解么?
在CtrlWndProc中执行完自己的处理代码后return OldCtrlWndProc(……