无法改变窗口的背景

时间:2016-03-26 14:55:55

标签: c++ winapi

我开发了一个win32应用程序并使用this example创建了一个颜色选择器。当用户在颜色对话框中单击“确定”时,我会更新if this之类的语句以更改应用程序的背景,但没有任何更改。我的错误在哪里?

if (ChooseColor(&cc) == TRUE) {
    HBRUSH hbrush = CreateSolidBrush(cc.rgbResult);
    rgbCurrent = cc.rgbResult;
    SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, (LONG)hbrush);
}

1 个答案:

答案 0 :(得分:1)

以下代码可以使用。

首先,SetClassLongPtr()返回先前的值,在这种情况下,是先前设置为窗口类(hWnd)的HBRUSH。您应该删除该对象以避免内存泄漏。

之后,调用InvalidateRect()会使颜色更改生效。因为当需要重新绘制窗口时将使用新创建的画笔。

InvalidateRect()将WM_ERASEBKGND发送到窗口。

while (!in.eof()) {