我开发了一个win32应用程序并使用this example创建了一个颜色选择器。当用户在颜色对话框中单击“确定”时,我会更新if this之类的语句以更改应用程序的背景,但没有任何更改。我的错误在哪里?
if (ChooseColor(&cc) == TRUE) {
HBRUSH hbrush = CreateSolidBrush(cc.rgbResult);
rgbCurrent = cc.rgbResult;
SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, (LONG)hbrush);
}
答案 0 :(得分:1)
以下代码可以使用。
首先,SetClassLongPtr()返回先前的值,在这种情况下,是先前设置为窗口类(hWnd)的HBRUSH。您应该删除该对象以避免内存泄漏。
之后,调用InvalidateRect()会使颜色更改生效。因为当需要重新绘制窗口时将使用新创建的画笔。
InvalidateRect()将WM_ERASEBKGND发送到窗口。
while (!in.eof()) {