無需編寫任何交互代碼,CChart 內建完整交互系統:高亮、選擇、鍵盤導航、屬性編輯、右鍵菜單。只需一行修改即可啟用雙擊響應。
在 MyRegisterClass 中修改窗口類樣式:
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; // 新增 CS_DBLCLKS
Win32 默認不發送 WM_LBUTTONDBLCLK,加上此標誌後雙擊才會產生消息。
| 圖元 | 高亮 | 選擇 | 編輯 | 說明 |
|---|---|---|---|---|
| 圖表標題 | ✅ | ✅ | ✅ (Enter/雙擊) | 修改標題文字、字體、顏色 |
| 繪圖區 | ✅ | ❌ | ✅ | 調整背景、網格、邊距 |
| 曲線/數據序列 | ✅ | ✅ | ✅ | 線型、顏色、寬度、標記、圖例名 |
| 座標軸 | ✅ | ✅ | ✅ | 範圍、刻度、標題、網格線 |
| 圖例 | ✅ | ✅ (點擊項選擇對應曲線) | ✅ | 顯示/隱藏、位置、字體 |
滑鼠移過任意圖元 → 邊框變色/加粗(曲線高亮採用獨特算法:像素級命中測試)。
點擊標題/座標軸/曲線/圖例項 → 選中態(曲線變粗變色)。
按 Space → 依序:標題 → 各座標軸 → 各曲線 → 回到標題。多軸/多曲線按添加順序排序。
選中狀態下按 Enter 或雙擊 → 模態對話框,修改屬性即時生效。
客戶區右鍵 → 功能豐富:
// MyRegisterClass 內
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; // ← 只加這個
CChartWnd 內部維護 std::vector,WM_MOUSEMOVE 遍歷命中測試設置 hoveredElement。WM_LBUTTONDOWN 設置 selectedElement,WM_KEYDOWN 處理 Space/Enter。IDD_PROPPAGE_* 動態構建,屬於庫內部實現。第 4 課:高級圖表類型——等高線圖,展示科學計算視覺化能力。