2

有没有办法在 CWnd(使用 MFC)中处理 wm_print 消息?我正在尝试拦截此消息并阻止打印子控件。将 ON_WM_PRINT() 添加到我的消息映射会引发编译错误。

4

1 回答 1

4

MFC 只为最常见的消息定义了 ON_WM_XXXX() 宏,但也有一个通用的 ON_MESSAGE() 宏允许您处理其他情况。添加

ON_MESSAGE(WM_PRINT, OnPrint)

到你的消息映射,然后声明并实现一个成员函数

afx_msg LRESULT OnPrint(WPARAM, LPARAM);

设备上下文在 WPARAM 中传递,因此您在实现中需要这样的东西:

LRESULT MyWindowClass::OnPrint(WPARAM wp, LPARAM)
{
  CDC* dc = CDC::FromHandle((HDC)wp);

  // Do custom logic here ...

  // Only call Default() if you want the default processing for this message too ...
  return Default();
}
于 2012-08-17T07:27:31.197 回答