首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

實現類 Visual C++ 可設斷點的編輯視窗

     編輯:關於VC++

核心技術:左邊距繪製與滑鼠互動

繼承 CEditView,在左側保留空間繪製行號與斷點圖示。關鍵步驟:

  1. 設定左邊距:OnInitialUpdate 取得行高,呼叫 SetMargins 預留空間。
SIZE size; GetTextExtentPoint(GetDC()->GetSafeHdc(), "A", 1, &size);
m_LineHeight = size.cy;
GetEditCtrl().SetMargins(m_LineHeight + 6, 0);
  1. 儲存斷點行號:使用 std::list<int>,提供 AddRemoveBP 切換斷點。
void AddRemoveBP(int line) {
    auto it = find(lBreakPoint.begin(), lBreakPoint.end(), line);
    if (it != lBreakPoint.end()) lBreakPoint.erase(it);
    else lBreakPoint.push_back(line);
}
  1. 繪製左側區域:PaintLeft 以 GetWindowDC 直接繪製背景、斷點紅圓(依可見行號計算 Y 座標)。
  2. 滑鼠左鍵點擊:判斷 X 座標在左邊距內,換算行號並切換斷點。
  3. 熱鍵支援:取得游標所在行號(LineFromChar(-1)+1)切換斷點。
  4. 觸發重繪:在 OnVScroll、OnHScroll、OnSize、OnPaint 等訊息後呼叫 PaintLeft。

執行畫面

斷點編輯視窗

實作提醒

  • 使用 GetWindowDC 而非 CPaintDC 以便在非 WM_PAINT 時繪製。
  • 需處理捲動、調整大小、字型變更時的重繪同步。
  • 可進一步擴充行號顯示、書籤、語法高亮等功能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved