處理WM_NCPAINT訊息

來源:互聯網
上載者:User
    處理WM_NCPAINT訊息可以實現自繪視窗邊框和標題列。     手頭有個視窗需要自繪邊框,於是處理了WM_NCPAINT訊息,結果程式初運行時可以正常繪製,一旦最小化或者調整視窗位置後就看不到自繪的邊框了。找了半天發現犯了個愚蠢的錯誤。在擷取視窗矩形後未做處理便開始了繪圖操作,現在加上平移操作,使要繪製的矩形左上方座標歸零後一切正常。     視窗包含WS_BORDER和WS_THICKFRAME風格,邊框大小一般為4。     代碼如下:

if( uMsg == WM_NCPAINT ){HDC hdc;hdc = GetWindowDC(hWnd);// Paint into this DCRECT rcWin;GetWindowRect(hWnd, &rcWin);OffsetRect( &rcWin, -rcWin.left, -rcWin.top );for(int i=0; i<4; i++){FrameRect(hdc, &rcWin, m_hbr[i]);InflateRect(&rcWin, -1, -1);}ReleaseDC(hWnd, hdc);return 0;}

    其中m_hbr是HBRUSH類型的數組,含4個元素,用CreateSolidBrush函數做了初始化。處理完WM_NCPAINT訊息後返回0,阻止系統調用DefWindowProc繼續處理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.