首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 對話框整合 NTGraph 控件繪製即時曲線:從主控台程式遷移至 GUI

     編輯:程式設計綜合問答

遷移步驟

  1. 建立 MFC 對話框專案:VS → MFC Application → Dialog based。
  2. 加入 NTGraph ActiveX 控件:
    • 專案右鍵 → Add Class → MFC Class from ActiveX Control。
    • 選擇 NTGraph Control(或註冊的 ProgID),產生 CNTGraph 包裝類別。
  3. 對話框資源編輯器放置控件:從工具箱拖曳 NTGraph Control 到對話框,設定 ID 為 IDC_NTGRAPH1。
  4. 建立控件變數:類別向導 → Member Variable,類型 CNTGraph,名稱 m_Graph。
  5. 資料餵入邏輯:在 OnInitDialog、定時器 OnTimer 或工作執行緒中呼叫:
    void CMyDlg::UpdateGraph(const std::vector<double>& data) {
        for (size_t i = 0; i < data.size(); ++i) {
            m_Graph.PlotXY(static_cast<long>(i * 10), static_cast<long>(data[i] * 100), 1);
        }
        m_Graph.Refresh(); // 強制重繪
    }
    
  6. 執行緒安全:若資料來自背景執行緒,必須用 PostMessage 通知 UI 執行緒更新,或使用 CNTGraph 的執行緒安全方法(若支援)。

關鍵 API

  • PlotXY(x, y, channel):繪製單點,channel 為曲線索引(1-based)。
  • SetXRange(min, max), SetYRange(min, max):設定座標範圍。
  • ClearGraph():清除所有曲線。

常見問題

  • 控件未註冊:以管理員權限執行 regsvr32 NTGraph.ocx。
  • 繪圖閃爍:啟用雙緩衝 m_Graph.SetDoubleBuffer(TRUE)。
  • 大量資料效能:批次呼叫 PlotXY 後統一 Refresh(),避免逐點重繪。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved