为什么使用GetDC(0)绘制图形; 一旦窗户移过它们就会消失?

use*_*073 1 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;
}
Run Code Online (Sandbox Code Playgroud)

当我的Rectangle被破坏以便我可以重新绘制时,有没有办法接收回调?有什么办法可以改变矩形的颜色吗?是否有一个很好的综合教程涵盖了这个?

MSa*_*ers 8

如果要绘制矩形,最好在自己的窗口中执行此操作.WM_PAINT每当您的窗口再次可见并需要重新绘制时,您将获得事件.OS不会被意外地称为"Windows"; 大多数图形都以窗口为中心.

如果您不想显示除矩形之外的任何内容,请将窗口设置为与矩形一样大.

  • 我通常更喜欢整个屏幕上带有彩色键的窗口.这取决于你用它做什么我想. (2认同)