我正试图绘制一个颜色表(已经构建)到我的窗口中的选定区域。
我正在向this来源学习。但是,在所有给定的代码示例中,只要打开窗口,就会执行绘图。
如果我希望在单击菜单项时出现绘图,或者不在开始时出现绘图,应该怎么做?
编辑:
我创建了一个名为GifPanel的新窗口,它将被绘制出来。
我的变量:

HWND GifPanel;
RECT r;

我的GifPanelProc:
case WM_PAINT:
    DrawFrame(GifPanel); // DrawFrame uses BeginPaint, SetPixel, EndPaint in order to draw
    break;

接下来,我有一个函数,通过单击可以执行以下操作:
GetClientRect(GifPanel, &r);
InvalidateRect(GifPanel, &r, FALSE);

当第一次打开窗口时,我可以看到GifPanel有一个红色背景(只是为了测试它是否工作)。
在执行上述处理之后,不改变像素。你能解释一下原因吗?

最佳答案

每当窗口收到WM_PAINT消息时,它都需要绘制自己;通常,它会首先收到WM_ERASEBKGND消息以清除背景。如果不想绘制表,则需要保留一个标记,可以在WM_PAINT处理程序中测试该标记以跳过表的绘制。
在菜单处理程序中,首先设置标志,然后使用InvalidateRect生成WM_PAINT消息。

关于c - 召唤时抽签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18321798/

10-11 23:02