首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VC++ 6.0 移除對話框非客戶區,實現位圖全螢蓋蓋登錄介面

     編輯:程式設計綜合問答

在 VC++ 6.0 中製作自訂登錄介面時,常需移除對話框的標題列、邊框等非客戶區,讓位圖完整填滿視窗。預設建立的對話框擁有 WS_CAPTION、WS_THICKFRAME、WS_SYSMENU 等樣式,導致位圖無法覆蓋標題列區域。

解決方案:使用 WS_POPUP 樣式

在對話框資源屬性中,或透過 PreCreateWindow 覆寫 CREATESTRUCT,移除標題與邊框相關樣式,僅保留 WS_POPUP | WS_BORDER(或僅 WS_POPUP)。

BOOL CMyDialog::PreCreateWindow(CREATESTRUCT& cs) {
    cs.style = WS_POPUP | WS_BORDER; // 移除 WS_CAPTION, WS_THICKFRAME, WS_SYSMENU 等
    return CDialog::PreCreateWindow(cs);
}

進階技巧

  • 若需可拖曳,可在 OnNcHitTest 回傳 HTCAPTION 讓客戶區響應拖曳。
  • 配合 SetWindowRgn 實現異形視窗。
  • 在 OnEraseBkgnd 繪製位圖,或使用 CStatic 控件設定 SS_BITMAP 填滿客戶區。

此法簡單有效,適用於啟動畫面、登錄框等全螢幕或自訂外觀視窗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved