VS2010 MFC 單文檔項目,視圖類中用 CMyDialog dlg; dlg.DoModal() 彈出對話框,但 Slider 控件不顯示。
CSliderCtrl m_slider 成員變量(Control 類型)。m_slider.SetRange(min, max)、SetTicFreq() 等。DoModal() 會阻塞主視圖,若需在視圖內嵌滑動條,應改用無模態對話框(Create(IDD_MYDIALOG, this) + ShowWindow(SW_SHOW))或直接在視圖類中創建 Slider 控件(CSliderCtrl 成員,OnCreate 中 Create)。// 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);
}
m_slider。OnInitDialog 初始化範圍、刻度。m_pDlg = new CMyDialog; m_pDlg->Create(IDD_MYDIALOG, this); m_pDlg->ShowWindow(SW_SHOW);。