c++ - 为什么用GetDC(0)绘制图形?一旦窗口移动到它们上方就会消失?

标签 c++ winapi

如果您使用以下代码绘制一个矩形,只要有任何物体移过它,该矩形就会消失。

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    HDC screenDC = ::GetDC(0);
    ::Rectangle(screenDC, 200, 200, 300, 300);

    int exit; cin >> exit;
    return 0;
}

有什么方法可以在我的 Rectangle 被销毁时接收回调以便我可以重新绘制它?有什么办法可以改变我的矩形的颜色吗?是否有涵盖此内容的好的综合教程?

最佳答案

如果你想画一个矩形,最好在你自己的窗口中画。每当您的窗口再次可见并需要重新绘制时,您将收到 WM_PAINT 事件。该操作系统并非偶然被称为“Windows”;大多数图形化的东西都以窗口为中心。

如果除了那个矩形你不想显示任何东西,那么让窗口和矩形一样大。

关于c++ - 为什么用GetDC(0)绘制图形?一旦窗口移动到它们上方就会消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549675/

相关文章:

c++ - malloc 函数的段错误

c++ - 在 C++ 中,关于位移和转换数据类型

c++ - 声明和访问全局对象

c# - 将 ApplicationFrameHost 托管的 UWP 应用程序连接到它们的实际进程

c++ - 从哪个版本的 IE 开始支持 "Find on page"命令?

.net - 在 Delphi 程序中托管 .NET 运行时

winapi - 为什么WM_APPCOMMAND LPARAM必须乘以65536

winforms - win32 窗口上的自定义属性

c++ - VS2010 和 OpenCV : Stack around a variable was corrupted

C++ WinApi CreateProcess 无法使用环境 block 创建子进程