网站建设优化石家庄,成都市城乡建设网站,wordpress子页面不显示不出来,昆明市建设局网站From: http://www.vckbase.com/document/viewdoc/?id1009
一、概述 控件的消息处理函数是由系统定义好了的#xff0c;通常情况下#xff0c;不需要自己提供。 但当需要对控件进行特殊控制时#xff0c;可以提供一个消息处理函数#xff0c;替换原来的消息处理函数。 自…From: http://www.vckbase.com/document/viewdoc/?id1009
一、概述 控件的消息处理函数是由系统定义好了的通常情况下不需要自己提供。 但当需要对控件进行特殊控制时可以提供一个消息处理函数替换原来的消息处理函数。 自己的处理完成后再调用控件的缺省消息处理。 二、相关函数 1.窗口类的属性可以通过GetWindowLong和SetWindowLong进行读取和设置
LONG GetWindowLong(HWND hWnd, // handle to windowint nIndex // offset of value to retrieve);LONG SetWindowLong(HWND hWnd, // handle to windowint nIndex, // offset of value to setLONG dwNewLong // new value
);可以返回或设置以下内容:nIndex值 意义GWL_EXSTYLE 扩展风格GWL_STYLE 风格GWL_WNDPROC 消息处理函数GWL_HINSTANCE 实例GWL_ID 窗口IDGWL_USERDATA 用户数据DWL_DLGPROC 对话框消息处理函数DWL_MSGRESULTDWL_USER 所以使用
OldMsgProc (WNDPROC)SetWindowLong (hControlWnd, GWL_WNDPROC, (LONG)MyMsgProc);将控件消息处理函数替换成MyMsgProc,原处理函数被OldMsgProc记录。
2.调用消息处理函数
LRESULT CallWindowProc(WNDPROC lpPrevWndFunc, // pointer to previous procedureHWND hWnd, // handle to windowUINT Msg, // messageWPARAM wParam, // first message parameterLPARAM lParam // second message parameter
);三、示例1.提供新处理函数
//记录原来处理函数的全局变量
WNDPROC OldMsgProc;//新消息处理函数
LRESULT MyMsgProc(HWND hwnd,UINT message, WPARAM wParam, LPARAM lParam)
{switch(message){case WM_LBUTTONDOWN:::MessageBox(NULL,click!,,MB_OK);}//调用控件原来的消息处理函数return CallWindowProc(OldMsgProc,hwnd,message,wParam,lParam);
}2.建立窗口后更改消息处理函数
case WM_CREATE:
{HWND hControlWnd CreateWindowEx(0,BUTTON,TEXT(按钮(A)),WS_CHILD | WS_VISIBLE|BS_PUSHBUTTON,10,10,100,100,hwnd,(HMENU)1000, //控件ID((LPCREATESTRUCT) lParam)-hInstance, //实例句柄NULL);//嵌入新的消息处理函数OldMsgProc (WNDPROC) SetWindowLong (hControlWnd, GWL_WNDPROC, (LONG)MyMsgProc);
}
return 0;(全文完)