承接前兩部分,本章完善 CFolderTabCtrl 模擬 Excel/Visual C++ 資料夾標籤 UI,新增左右捲動按鈕(三角形圖示)、支援大量標籤頁自動捲動、雙擊/長按加速捲動,並整合至影像顯示範例程式驗證實用性。
CButton,BS_OWNERDRAW 自繪,DrawItem 以 GDI 繪製三角形(左右向),自動適應按鈕大小,無位圖縮放邊緣鋸齒問題。OnLButtonDblClk:發送 WM_LBUTTONDOWN 模擬兩次單擊 → 捲動兩頁。OnTimer:長按觸發定時器,週期性發送 WM_COMMAND 給父視窗 → 持續捲動至邊界(含啟動延遲,類似鍵盤重複鍵行為)。OnCreate 中依樣式旗標 FTS_BUTTONS 建立兩個 CFolderButton 子視窗(ID: FTBPREV=1, FTBNEXT=2),記錄按鈕總寬 m_cxButtons。OnSize 重新定位按鈕與標籤區域。OnPaint 設定視口原點 dc.SetViewportOrg(m_cxButtons - firstTabRect.left, 0),使標籤繪製自動偏移至按鈕右側,原有繪製邏輯無需修改。ON_BN_CLICKED(FTBNEXT, OnNextTab) 遞增 m_iFirstTab、Invalidate()、呼叫 UpdateButtons() 更新按鈕啟用/停用狀態(首頁停用左鍵、尾頁停用右鍵)。基於《在 MFC 程式中顯示 JPG/GIF 影像》範例(CPicture 封裝 IPicture),建立 13 個標籤頁分別顯示不同格式影像(*.gif, *.jpg, *.bmp, DIB),驗證 CFolderTabCtrl 多標籤、捲動、繪製效能與視覺一致性。
CFolderTabCtrl:核心標籤控制,含按鈕管理、標籤陣列、捲動邏輯、自繪。CFolderButton:自繪捲動按鈕,封裝滑鼠/定時器行為。MENUITEM 結構:標籤頁資料(文字、圖示索引、子視窗指標等)。完整原始碼附於文章,可直接移植專案,快速獲得專業級資料夾標籤介面。