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

MFC 單文檔視圖中添加 Slider 滑動條控件

     編輯:程式設計綜合問答

問題現象

VS2010 MFC 單文檔項目,視圖類中用 CMyDialog dlg; dlg.DoModal() 彈出對話框,但 Slider 控件不顯示。

原因分析

  1. 對話框資源未添加控件:資源視圖中對話框模板(IDD_MYDIALOG)沒有拖放 Slider 控件(IDC_SLIDER1)。
  2. 未建立控件變量:類向導未為 Slider 添加 CSliderCtrl m_slider 成員變量(Control 類型)。
  3. OnInitDialog 未初始化範圍:需調用 m_slider.SetRange(min, max)、SetTicFreq() 等。
  4. 模態對話框阻塞視圖:DoModal() 會阻塞主視圖,若需在視圖內嵌滑動條,應改用無模態對話框(Create(IDD_MYDIALOG, this) + ShowWindow(SW_SHOW))或直接在視圖類中創建 Slider 控件(CSliderCtrl 成員,OnCreate 中 Create)。

正確做法:視圖類直接嵌入 Slider

// CMyView.h
class CMyView : public CView {
    CSliderCtrl m_slider;
    // ...
};

// CMyView.cpp
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) {
    if (CView::OnCreate(lpCreateStruct) == -1) return -1;
    CRect rect(10, 10, 300, 40);
    m_slider.Create(WS_CHILD | WS_VISIBLE | TBS_AUTOTICKS | TBS_HORZ, rect, this, IDC_MY_SLIDER);
    m_slider.SetRange(0, 100);
    m_slider.SetPos(50);
    return 0;
}

void CMyView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) {
    if (pScrollBar->GetDlgCtrlID() == IDC_MY_SLIDER) {
        int pos = m_slider.GetPos();
        // 處理滑動邏輯
    }
    CView::OnHScroll(nSBCode, nPos, pScrollBar);
}

若必須用對話框

  • 資源編輯器添加 Slider 控件(IDC_SLIDER1)。
  • 類向導添加 Control 變量 m_slider。
  • OnInitDialog 初始化範圍、刻度。
  • 視圖中用無模態方式創建:m_pDlg = new CMyDialog; m_pDlg->Create(IDD_MYDIALOG, this); m_pDlg->ShowWindow(SW_SHOW);。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved