c++ - GetClipRgn 的正确用法?

标签 c++ winapi

我想编写一个函数,需要在 DC 上设置裁剪区域,但在完成后恢复 DC 上任何现有的裁剪区域。

所以我找到了GetClipRgn这听起来正是我想要的,但似乎令人困惑。我找不到任何使用它的例子,Petzold 也没有提供任何东西。

我想到的是这个:

void DrawStuff( HDC hDC )
{
    HRGN restoreRegion = CreateRectRgn( 0, 0, 0, 0 );
    if (GetClipRgn( hDC, restoreRegion ) != 1)
    {
        DeleteObject( restoreRegion );
        restoreRegion = NULL;
    }

    // 
    // Set new region, do drawing
    //

    SelectClipRgn( hDC, restoreRegion );
    if (restoreRegion != NULL)
    {
        DeleteObject( restoreRegion );
    }
}

我需要创建一个区域才能获取当前区域,这看起来很奇怪。

这是正确的用法吗?

有没有更好的方法达到同样的效果?

最佳答案

最接近正确答案的是 Hans Passant 的评论:

Yeah, it's a weird function. Your code looks okay.

关于c++ - GetClipRgn 的正确用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478180/

相关文章:

c# - 窗口在服务模式下没有文本

c++ - 如果在系统范围内禁用,则激活窗口主题

java - Java 中的 Windows 资源管理器上下文菜单

python - win32file.createFile "The System cannot find the specified path"

c++ - 单线程设计还是多线程设计?

c++ - 常量数据存储在哪里?

c++ - 以二进制模式打开输入文件流时设置 skipws 标志

c++ - 使用 EvtSetChannelConfigProperty() 函数时出现访问冲突错误

C++ for循环数组赋值。得到垃圾返回

c++ - 减去2张 map