僅更新 RGB 數值部分,避免全文重繪:
void CMyDlg::UpdateRGBTip(COLORREF clr) {
CString str; str.Format(L"(%d,%d,%d)", GetRValue(clr), GetGValue(clr), GetBValue(clr));
if (str == m_oldStr) return;
int len = m_edit.LineLength(6); // 第 6 行長度
m_edit.SetSel(20, len + 6); // 選中舊 RGB 文字
m_edit.ReplaceSel(str); // 替換
m_oldStr = str;
}
MFC 原始碼 TrackHandle 中 GetMessage 後直接 switch,導致主視窗收不到訊息。複製 TRCKRECT.CPP 至專案,在 GetMessage 後插入:
DispatchMessage(&msg); // 讓主視窗也能處理 WM_MOUSEMOVE 等
_afxBlackSolidPen,Construct() 中建立SetRectColor(COLORREF) 修改畫筆顏色Draw() 中根據 m_nStyle 選用點線/實線畫筆pDC->FillSolidRect(rect, m_rectColor)SetResizeCursor(HCURSOR) 覆寫調整時游標AFXEXT.H 複製 CRectTracker 宣告為 CMyTrackerTRCKRECT.CPP 複製實作,移除 DEBUG 相關代碼Construct()CMyTracker,不影響系統 MFC