2013-09-26
個(gè)評(píng)論我要投稿今天做MFC畫面時(shí)有一個(gè)像,.net中的NumericUpDown空間。 我想MFC和.net控件應(yīng)該不一樣,查了一下,MFC中果然沒(méi)有這個(gè)控件。 帖子說(shuō)就是:EDIT控件 + Spin控件 現(xiàn)在說(shuō)一下怎么做,在這里記錄一下,替他童鞋少走彎路。 步驟: 1.添加EDIT控件2.添加Spin控件如果不是這樣的順序的話,使用ctrl+D改變Tab順序,使spin緊靠edit后面3.在EDIT控件上面設(shè)置group屬性(特別注意) 或 ((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_ROUND))->SetBuddy(GetDlgItem(IDC_EDIT_ROUND));將兩個(gè)關(guān)聯(lián)4.在Spin控件上設(shè)置Auto Buddy 為 trueSet Buddy Integer 為 trueAlignment 為 Right Align5.添加Edit控件 int 變量 m_nNumK;這個(gè)時(shí)候點(diǎn)擊向下應(yīng)該可以增加數(shù)值6.在OnInitDialog中添加以下語(yǔ)句((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1))->SetRange(-100, 100);這個(gè)時(shí)候向上的箭頭為增加,向下的箭頭為減小. 以上就結(jié)束了。但這樣只能增加整數(shù),小數(shù)不行。 點(diǎn)擊SPIN控件的增減按鍵時(shí),對(duì)話框的 OnVScroll會(huì)收到消息WM_VSCROLL。 如果你希望增量為 0.1,最小值為0.0且最大值為10.0,你可以設(shè)置SPIN的范圍為0-100 (100 = 10/0.1) 1.在上面6中添加如下代碼:
?1
2
3
CSpinButtonCtrl *pSpin1 = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1);
pSpin1->SetRange(1, 100);
pSpin1->GetBuddy()->SetWindowText(_T("0.01"));
2.添加OnVScroll處理。
3.添加下面代碼
?1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void DetectDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
switch( pScrollBar->GetDlgCtrlID())
{
case IDC_SPIN1:
{
float nStep=0.01;
CString str;
str.Format(_T("%.2f"),nPos*nStep);
((CSpinButtonCtrl*) pScrollBar)->GetBuddy()->SetWindowText(str);
break;
}
break;
}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。