怎样获取 CDialog 窗口 DC 剪切域?

HoBoss 2008-09-03 04:44:59
当 CDialog 有一部分被其它窗口档住, 如何可以获取到准确的剪切域(HRGN, CRgn).
附: GetBoundsRect() 和 GetClipBox 得到的是一个近似距形.

我尝试用 GetClipRgn(hmydc, rgn); 每次返回都是 0 . 代码如下.

CRgn rgn;
rgn.CreateRectRgn(0, 0, 100, 100);
int n;
HDC hmydc = ::GetDC(m_hWnd);
n = ::GetClipRgn(hmydc, rgn);
::ReleaseDC(m_hWnd, hmydc);

If the function succeeds and there is no clipping region for the given device context, the return value is zero. If the function succeeds and there is a clipping region for the given device context, the return value is 1.

...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
World7th 2008-09-04
  • 打赏
  • 举报
回复
设置窗口的剪裁区域还必须调用
SetWindowRgn,
你说的CDialog有一部分被其它挡住应该是获取被挡住部分的无效区域,一般是获取无效矩形,用GetUpdateRect取得该矩形区域

剪裁区域和矩形区域是完全不同的两个概念
HoBoss 2008-09-04
  • 打赏
  • 举报
回复
这个不行, 不管是剪切域, 还是无效矩形.
我想要得到的是, 窗口没有被档住部分的 RECT列表(冒似这个就是剪切域). 而不是一个RECT.

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧