C programmin WM_PAINT导致不良行为

时间:2017-10-11 09:26:29

标签: c windows winapi

我创建了一个父窗口,它有许多子窗口,如按钮,静态文本exc。它们都是可见的并且没有任何问题,但是当我向窗口回调添加一段代码时,它们全部消失了+我看不到我刚试图从函数中绘制的行。

如何摆脱这个问题?

case WM_PAINT:
    {
        HDC hdc = GetDC(hwnd);
        HGDIOBJ hp = CreatePen(0 ,5,RGB(0,100,0));
        SelectObject(hdc,hp);
        MoveToEx(hdc, 825, 0, 0);
        LineTo(hdc, 825, 1000);
        ReleaseDC(hwnd, hdc);
    }
break;

1 个答案:

答案 0 :(得分:0)

  1. 您不能使用BeginPaint / EndPaint

  2. 如果您进入父窗口,则必须注意不要覆盖任何内容。请参见样式WS_CLIPCHILDREN。

  3. 因为您没有使用BeginPaint / EndPaint,所以未准备好背景。如果您将消息传递给默认窗口过程,那里的代码将调用BeginPaint / EndPaint,这将导致背景被删除。

  4. 您可以创建一支笔,将其选择为DC并且永远不会破坏笔。每次重新绘制时都会创建一支新笔。

  5. 请阅读一些关于使用Windows GDI的书籍!当你告诉自己基本知识时,我写的所有内容都可以轻松修复......