我正试图绘制一个颜色表(已经构建)到我的窗口中的选定区域。
我正在向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/