[英]Can't change background of window
以下代碼將起作用。
首先,SetClassLongPtr() 返回先前的值,在本例中,即先前設置為窗口類 (hWnd) 的 HBRUSH。 您應該刪除該對象以避免內存泄漏。
之后,調用 InvalidateRect() 使顏色更改生效。 因為當窗口需要重新繪制時會使用新創建的畫筆。
InvalidateRect() 將 WM_ERASEBKGND 發送到窗口。
if (ChooseColor(&cc) == TRUE) {
HBRUSH hbrush = CreateSolidBrush(cc.rgbResult);
HBRUSH hOldBrush = (HBRUSH)SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, (LONG_PTR)hbrush);
DeleteObject(hOldBrush);
InvalidateRect(hWnd, NULL, 1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.