回覆列表
  • 1 # 使用者5022299759159

    VC標準對話方塊的標題欄,是有windows系統控制顏色的(你可以透過修改桌面屬性中的配色方案調整,看到實際效果),也就是說,在通常情況下,這個是不受程式控制的。

    作為新手,不推薦做這個改變,比較麻煩。

    簡單介紹一下修改標題欄顏色和樣式的兩個方案:(都比較麻煩)

    修改對話方塊屬性,去掉系統標題欄,然後自己在客戶區自繪一個假的標題欄,加上自定義的幾個系統訊息響應按鈕。這是多數漂亮的MFC工程介面常用的一種手段,優點是不僅可以改變顏色,而且可以改變形狀,實現異形視窗和標題欄等等。百度搜“VC 自繪標題欄”可以看到很多文章。

    禁止並重載部分NC非客戶區訊息,可以實現改變標題欄顏色,缺點是在一些極端情況下,效果不好(比如彈出模態子對話方塊或者AfxMessageBox之類,會變成系統控制,顏色修改無效)。過載訊息包括:WM_NCPAINT|| WM_NCACTIVATE||WM_NOTIFY||WM_SETTEXT,主要是第一個,過載後在通常狀態下,就改變了顏色,注意過載後不要呼叫基類虛擬函式。

    void CTestPopDlg::OnNcPaint() {// TODO: Add your message handler code hereCBitmap bmp;bmp.LoadBitmap( IDB_BITMAP1 );CWindowDC dc ( this );CDC memDC;memDC.CreateCompatibleDC( &dc );CRect rect;GetWindowRect( &rect );memDC.SelectObject( &bmp );dc.StretchBlt( 0, 0, rect.Width(), 25, &memDC, 0, 0, 10, 25, SRCCOPY );// Do not call CDialog::OnNcPaint() for painting messages}

    方案二大概就是這個樣子。

    方案一是徹底的解決辦法,但程式碼很零散而且多(提示:可以使用介面庫實現),方案二相對程式碼較少,但效果強差人意。

  • 中秋節和大豐收的關聯?
  • 客家人的性格有什麼特點?