windows程式設計第九章colors

來源:互聯網
上載者:User

標籤:

1、使用畫刷將整個介面初始化為黑色

wndclass.hbrBackground = CreateSolidBrush(0);

2、WM_CREATE建立視窗的時候

hIns = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);        hwndRect = CreateWindow(L"static", L"", WS_VISIBLE|WS_CHILD|SS_WHITERECT, 0, 0, 0, 0, hwnd, (HMENU)9, hIns, NULL);        for (int i = 0; i < 3; ++i) {            hwndScroll[i] = CreateWindow(L"scrollbar", L"", WS_VISIBLE|WS_CHILD|SBS_VERT|WS_TABSTOP, 0,0,0,0,hwnd,(HMENU)i, hIns, NULL);            hwndLabel[i] = CreateWindow(L"static", szColorLabel[i], WS_VISIBLE|WS_CHILD|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i+3), hIns,NULL);            hwndValue[i] = CreateWindow(L"static",L"0",WS_VISIBLE|WS_CHILD|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i+6),hIns,NULL);            SetScrollRange(hwndScroll[i], SB_CTL, 0, 255, FALSE);            SetScrollPos(hwndScroll[i], SB_CTL, 0, FALSE);            OldScroll[i] = (WNDPROC)SetWindowLong(hwndScroll[i], GWL_WNDPROC, (LONG)ScrollProc);            hBrush[i] = CreateSolidBrush(crPrim[i]);        }        hBrushStatic = CreateSolidBrush(GetSysColor(COLOR_BTNHIGHLIGHT));        cyChar = HIWORD(GetDialogBaseUnits());

注意,在hwndRect的建立風格時候使用SS_WHITERECT   

在msdn上面的描述是這樣的: Specifies a rectangle filled with the color used to fill the window background. The default is white.

說明使用預設的白色用來填充視窗背景色。並在WM_SIZE的時候將hwndRect充滿整個視窗的左半部分,所以整個視窗的左半部分顯示為白色。

這裡通過攔截捲軸的預設視窗處理函數來進行對捲軸的一些特殊處理 OldScroll[i] = (WNDPROC)SetWindowLong(hwndScroll[i], GWL_WNDPROC, (LONG)ScrollProc);

 

    case WM_CTLCOLORSCROLLBAR:        return (LRESULT)hBrush[GetWindowLong((HWND)lParam, GWL_ID)];    case WM_CTLCOLORSTATIC:        {            int id = GetWindowLong((HWND)lParam,GWL_ID);            if (id > 2 && id < 9) {                SetTextColor((HDC)wParam, crPrim[id % 3]);                SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNHIGHLIGHT));                return (LRESULT)hBrushStatic;            }        }        break;

在static和scrollbar類型的介面畫刷攔截顯示中,通過返回對應的畫刷控制代碼實現對static文字背景顏色的填充。也可以有其他一些映像之類的填充。

 

 

以下是在WM_VSCROLL中執行的修改整個視窗背景畫刷,並使整個視窗背景的右半部分無效,重新填充顏色

DeleteObject((HBRUSH)SetClassLong(hwnd,GCL_HBRBACKGROUND, (LONG)CreateSolidBrush(RGB(color[0],color[1],color[2]))));
InvalidateRect(hwnd,&rcColor,TRUE);

 

windows程式設計第九章colors

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.