我制作了一个自定义非客户区域的程序。除了处理WM_NCPAINT之外,我还将WM_NCCALCSIZE中的客户区大小设置为零,然后通过处理WM_NCHITTEST来模拟非客户区。所有绘制到窗口的内容都是在WM_PAINT中处理的。当我启动程序并且程序需要重新绘制时,WM_PAINT工作正常。但是,一旦我通过调用ShowWindow(hwnd,SW_MINIMIZE)来最小化程序,然后通过在任务栏中单击它来还原程序,WM_PAINT不再有效。我检查了WM_PAINT中的每个函数调用,它们都返回成功,但窗口只显示为黑色。任何人有什么想法为什么?WM_PAINT在最小化和恢复窗口后停止工作
下面是我的WM_PAINT处理程序的代码:
下面是输出到控制台窗口:
BeginPaint的成功
hdcBuffer有效
MainWindow- > hbmBuffer有效
hdcMem有效
所以,看到我在WM_PAINT处理每一个函数调用返回成功,为何显示为黑色的我的整个窗口?
你不是应该在这种情况下,使用'WM_NCPAINT'? – pezcode 2012-02-25 14:44:04
@pezcode它并不重要,因为这两个处理程序基本上都是一样的。 – Gogeta70 2012-02-25 14:56:56
我已经解决了这个问题,我会在6-7小时内添加答案,当stackoverflow将让我> _ < – Gogeta70 2012-02-25 15:53:08