CChart 是一個輕量級、純 C++ 實現的圖表繪製庫,支援 VC6~VS2019+,無 MFC 依賴。本系列教程將從零開始,手把手帶你構建專業級圖表應用。本課目標:創建項目、配置庫、繪製一條 y=x² 折線圖。
CChartDll.7z(版本 ≥ 2.5.1.2),解壓 Library 目錄下 5 個文件:Chart.h、PlotDll.dll、PlotDll_d.dll、PlotDll.lib、PlotDll_d.lib。Lesson01。將解壓的 5 個庫文件複製到專案目錄(與 Lesson01.cpp 同級)。
在 Lesson01.cpp 頂部 #define MAX_LOADSTRING 100 下方添加:
#include "Chart.h"
#ifdef _DEBUG
#pragma comment(lib, "PlotDll_d.lib")
#else
#pragma comment(lib, "PlotDll.lib")
#endif
在 WndProc 函數開頭添加:
static CChartWnd chartWnd; // static 確保生命週期跨越 WndProc 調用
在 case WM_PAINT: 之前插入:
case WM_CREATE:
chartWnd.Attach(hWnd, kTypeXY); // 將圖表「粘」到主窗口,類型為 XY 折線圖
chartWnd.GetChart()->AddPoint2D(-3.0, 9.0);
chartWnd.GetChart()->AddPoint2D(-2.0, 4.0);
chartWnd.GetChart()->AddPoint2D(-1.0, 1.0);
chartWnd.GetChart()->AddPoint2D(0.0, 0.0);
chartWnd.GetChart()->AddPoint2D(1.0, 1.0);
chartWnd.GetChart()->AddPoint2D(2.0, 4.0);
chartWnd.GetChart()->AddPoint2D(3.0, 9.0);
chartWnd.GetChart()->SetTitle(_T("Hello World,我的第一個 CChart 程序!"));
break;
在 case WM_DESTROY: 下添加:
chartWnd.Detach(); // 歸還消息循環控制權
註釋或刪除 case WM_PAINT: 內的 DrawText 相關代碼(圖表已接管繪製)。
按 F5,即可看到漂亮的拋物線圖!
CChartWnd:封裝了消息循環的窗口類,Attach/Detach 接管/歸還主窗口消息。kTypeXY:最基礎的二維折線圖類型。AddPoint2D(x,y):逐點添加數據,適合少量點;大量數據請用 AddCurve(下課講解)。第 2 課:深度剖析本課代碼結構,講解 CChartWnd 內部機制與消息路由原理。