首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

深入淺出 CPropertySheet 進階客製化技巧

     編輯:關於VC++

衍生 CMyPropSheet 統一客製化入口

建立 CMyPropSheet : public CPropertySheet,於 OnInitDialog 等處集中修改。

常見客製化項目

  1. 隱藏預設按鈕:
    m_psh.dwFlags |= PSH_NOAPPLYNOW; // 隱藏套用
    GetDlgItem(IDCANCEL)->ShowWindow(FALSE); // 隱藏取消
  2. 移動按鈕位置:取得按鈕 CRect,ScreenToClient 後 MoveWindow 重新定位,可配合調整視窗大小。
  3. 修改標籤文字:
    TC_ITEM item; item.mask = TCIF_TEXT; item.pszText = _T("New Label");
    GetTabControl()->SetItem(0, &item);
  4. 修改標籤字型:
    m_font.CreateFont(14,0,0,0,800,TRUE,0,0,1,0,0,0,0,_T("Arial"));
    GetTabControl()->SetFont(&m_font);
  5. 標籤顯示圖示:
    m_imageList.Create(IDB_MYIMAGES, 13, 1, RGB(255,255,255));
    GetTabControl()->SetImageList(&m_imageList);
    TC_ITEM item; item.mask = TCIF_IMAGE;
    for (int i=0; i<NUMBER_OF_TABS; i++) { item.iImage=i; GetTabControl()->SetItem(i,&item); }
  6. 左下角繪製位圖:OnPaint 中 BitBlt 繪製資源位圖。
  7. 右下角 3D 文字 Logo:OnPaint 疊加陰影/高光/主色三次 DrawText 產生立體效果。
  8. 動態加入控件(如 Edit):
    m_edit.CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL,
        WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
        x, y, w, h, m_hWnd, 0, 0);

實作提醒

  • 所有 GDI 物件(字型、筆刷、位圖)需為成員變數,避免重複建立/釋放。
  • OnPaint 勿呼叫基類實作,以免覆蓋自繪內容。
  • 按鈕移動需考慮 DPI 縮放與多語言文字寬度變化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved