【发布时间】:2016-01-15 13:17:19
【问题描述】:
给定一个派生自 CEdit 的类,是否可以截获 WM_PAINT 消息,使用不同的 CDC 调用基类消息?
class CEditNew : public CWindowImpl<CEditNew, CEdit>
{
public:
BEGIN_MSG_MAP(CEditNew)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
END_MSG_MAP()
LRESULT OnPaint(UINT, WPARAM, LPARAM, BOOL &)
{
return 0;
}
};
我可以通过调用 SubclassWindow 来拦截 CEdit 的 WM_PAINT,但我真的很想调用基类原始绘制处理程序。
对于上下文,父窗口有自己的 compatibledc(它使用半透明),我需要通过给它们这个 dc 来允许子控件在需要时绘制自己。
【问题讨论】:
-
像这样修改 EDIT 控件是行不通的,它犯了严重的罪行并在不使用 WM_PAINT 的情况下进行绘画。
-
这不是真正的修补。我只想让它在更新时绘制到我给它的 DC,就像我使用 WM_PRINT 或 WM_PRINTCLIENT 时一样。