LRESULT CALLBACK CCustomMsgObject::__WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
CCustomMsgObject* pThis = NULL;
if (uMsg == WM_NCCREATE) {
LPCREATESTRUCT lpCS = reinterpret_cast<LPCREATESTRUCT>(lParam);
pThis = static_cast<CCustomMsgObject*>(lpCS->lpCreateParams);
ATLASSERT(NULL != pThis);
::SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<LONG>(pThis));
} else {
pThis = reinterpret_cast<CCustomMsgObject*>(::GetWindowLongPtr(hwnd, GWLP_USERDATA));
if (NULL == pThis || pThis->m_hWnd != hwnd) {
return ::DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return pThis->HandleMessage(uMsg, wParam, lParam);
}
return ::DefWindowProc(hwnd, uMsg, wParam, lParam);
}
LRESULT CCustomMsgObject::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_COPYDATA) {
if (OnCopyData((HWND)wParam, (COPYDATASTRUCT*)lParam)) {
ret
自定义类处理消息循环HWND_MESSAGE
最新推荐文章于 2022-01-11 14:50:16 发布
该博客介绍了如何使用CCustomMsgObject类处理HWND_MESSAGE窗口过程。通过LRESULT CALLBACK CCustomMsgObject::__WindowProc函数,实现了消息的处理,包括在WM_NCCREATE时设置用户数据,并在其他消息中获取对象指针。HandleMessage方法处理WM_COPYDATA消息,用于接收COPYDATASTRUCT数据。CreateMsgPumpWnd函数用于创建消息循环窗口。
摘要由CSDN通过智能技术生成