国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MFC中Spin control的使用
MFC中Spin control的使用
標簽: MFC Spin control 控
2014-07-16 23:15 2363人閱讀 評論(0)  舉報
 分類:
MFC(56) 
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
在編寫一個工具時需要對經(jīng)緯度進行微調(diào),經(jīng)緯度使用度分秒的格式來呈現(xiàn)的。想到了用控件 Spin Control 來實現(xiàn)?,F(xiàn)對這個控件的用法做一個簡要的回顧。
新建一個MFC基于對話框的應用程序,工程命名為 Spinctrl,在界面中添加一個編輯框控件和一個Spin Control,實現(xiàn)效果:首先往編輯框中輸入一個數(shù)值,然后通過 Spin Control來實現(xiàn)微調(diào)。
界面表現(xiàn)如圖1-1所示,
圖1-1 Spin Control 用例示意圖
編輯框添加值變量  CString m_editNum1;
Spin Control添加控件變量 CSpinButtonCtrl m_Spin;
在初始化函數(shù)中綁定著兩個控件:
[cpp] view plain copy
int itemp = _wtoi(m_editNum1);
m_Spin.SetBuddy(GetDlgItem(itemp));
m_Spin.SetRange(0,100);
為控件 Spin Control添加消息響應事件
[cpp] view plain copy
void CSpinctrlDlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
// TODO: 在此添加控件通知處理程序代碼
UpdateData(true);
CString ss;
if(pNMUpDown->iDelta == -1) // 如果此值為-1 , 說明點擊了Spin的往下的箭頭
{
double a;
a=wcstod(m_editNum1,NULL)-1;
ss.Format(_T("%.1f"),a);
}
else if(pNMUpDown->iDelta == 1) // 如果此值為1, 說明點擊了Spin的往上的箭頭
{
double a;
a=wcstod(m_editNum1,NULL)+1;
ss.Format(_T("%.1f"),a);
}
m_editNum1=ss;
UpdateData(false);
*pResult = 0;
}
//************************************************************************
以下是使用CSpinButtonCtrl的使用方法:    轉(zhuǎn):http://www.cnblogs.com/tomato-potato/articles/1202637.html
==================================================================
CSpinButtonCtrl使用說明
CSpinButtonCtrl使用起來比較特殊,使用起來,需要注意一些地方.實際的教程也比較少.為了讓后人少走彎路,這里寫這篇文章以說明.
1.添加EDIT控件
2.添加Spin控件
如果不是這樣的順序的話,使用ctrl+D改變Tab順序,使spin緊靠edit后面
3.在EDIT控件上面設(shè)置group屬性(特別注意)
4.在Spin控件上設(shè)置
Auto Buddy 為 true
Set Buddy Integer 為 true   ***???這個不該設(shè)置
Alignment 為 Right Align
5.添加Edit控件 int 變量 m_nNumK;
這個時候點擊向下應該可以增加數(shù)值
6.在OnInitDialog中添加以下語句
((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1))->SetRange(-100, 100);
這個時候向上的箭頭為增加,向下的箭頭為減小.
=======================================================================================
在看書的時候發(fā)現(xiàn)教材寫的很不完整,導致我Auto Buddy屬性沒有設(shè)置為true,結(jié)果運行的時候點了半天edit控件的內(nèi)容都是空白的...
以下是我的代碼,個人比較笨,手動設(shè)置buddy...
功能,三個spinbutton,設(shè)置RGB,改變下面的方塊的顏色
Code
OnInitDialog()
{
CDialog::OnInitDialog();
CSpinButtonCtrl *pSpinRed =(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_RED);
ASSERT(pSpinRed!=NULL);
pSpinRed->SetBuddy(GetDlgItem(IDC_EDIT_RED));
pSpinRed->SetRange(0,255);
pSpinRed->SetBase(3);
pSpinRed->SetPos(128);
CSpinButtonCtrl *pSpinGREEN =(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_GREEN);
ASSERT(pSpinGREEN!=NULL);
pSpinGREEN->SetBuddy(GetDlgItem(IDC_EDIT_GREEN));
pSpinGREEN->SetRange(0,255);
pSpinGREEN->SetBase(1);
pSpinGREEN->SetPos(128);
CSpinButtonCtrl *pSpinBLUE =(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_BLUE);
ASSERT(pSpinBLUE!=NULL);
pSpinBLUE->SetBuddy(GetDlgItem(IDC_EDIT_BLUE));
pSpinBLUE->SetRange(0,255);
pSpinBLUE->SetBase(1);
pSpinBLUE->SetPos(128);
// 設(shè)置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
//  執(zhí)行此操作
SetIcon(m_hIcon, TRUE);            // 設(shè)置大圖標
SetIcon(m_hIcon, FALSE);        // 設(shè)置小圖標
// TODO: 在此添加額外的初始化代碼
return TRUE;  // 除非將焦點設(shè)置到控件,否則返回 TRUE
}
描繪矩形
Code
最終效果:
       
///////////////////////////////////////
一般應用:
設(shè)置屬性:
Auto Buddy(自動取關(guān)聯(lián)控件為TAB順序前一個)
Set Buddy Interger(使控件設(shè)置關(guān)聯(lián)控件數(shù)值,這個值可以是十進制或十六進制)
Wrap(數(shù)值超過范圍時循環(huán))
Arrow keys(當按下向上和向下方向鍵時,控件可以增加或減小)
OnInitDialog函數(shù)中設(shè)置控件數(shù)值范圍:
SetRange(0,255);
、旋轉(zhuǎn)按鈕控件
“旋轉(zhuǎn)按鈕控件”(也稱為上下控件)是一對箭頭按鈕,用戶點擊它們來增加或減小某個
值,比如一個滾動位置或顯示在相應控件中的一個數(shù)字。一個旋轉(zhuǎn)控件通常是與一個相伴的
控件一起使用的,這個控件稱為“伙伴窗口”。
一個旋轉(zhuǎn)按鈕控件可以自動定位在它的伙伴窗口的旁邊,看起來就像一個單一的控件。
通常,將一個旋轉(zhuǎn)按鈕控件與一個編輯控件一起使用,以提示用戶進行數(shù)字輸入。點擊向上
箭頭使當前位置向最大值方向移動,而點擊向下箭頭使當前位置向最小值的方向移動。缺省
時,最小值是100,最大值是0,當用戶點擊向上箭頭則減少數(shù)值,而點擊向下箭頭則增加
它,這看起來就像顛倒一樣,因此我們還需使用成員函數(shù)CSpinButtonCtrl::SetRange來改變
最大和最小值。
(1)旋轉(zhuǎn)按鈕控件常用的風格
旋轉(zhuǎn)按鈕控件常用的風格有:
UDS_HORZ控件的箭頭指向左和右,而不是指向上和下。
UDS_WRAP若控件的增加或減小超過了結(jié)尾或開始,使數(shù)值可以“循環(huán)”。
UDS_ARROWKEYS當按下向上和向下方向鍵時,控件可以增加或減小。
UDS_SETBUDDYINT使控件設(shè)置伙伴窗口數(shù)值,這個值可以是十進制或十六進制。
UDS_NOTHOUSANDS不在每隔三個十進制數(shù)字的地方加上千分隔符。
UDS_AUTOBUDDY自動選擇一個Z-order中的前一個窗口作為控件的伙伴窗口。
UDS_ALIGNRIGHT將旋轉(zhuǎn)按鈕窗口定位在伙伴窗口的右邊?;锇榇翱诘膶挾缺粶p小來適應此控件的寬度。
UDS_ALIGNLEFT將旋轉(zhuǎn)按鈕窗口定位在伙伴窗口的右邊?;锇榇翱诒灰苿拥接疫?,并且它的寬度被減小來適應此控件的寬度。
這些風格也可通過旋轉(zhuǎn)按鈕控件屬性對話框來設(shè)置,其Styles屬性說明如下:
.Orientation控件放置方向:Vedical(垂直)、Hofizontal(水平,同UDS_HORZ)。
.Alignment控件在伙伴窗口的位置安排:Unattached(不相干)、Right(右邊,同UDS_ALIGNRIGHT)、Left(左邊, 同UDS_ALlGNLEFT)。
.Auto buddy同UDS_AUTOBUDDY。
.Set buddy integer同UDS_SETBUDDYINT。
.No thousands同UDS_NOTHOUSANDS。
.Wrap 同UDS_WRAP。
.Arrow keys同UDS_ARROWKEYS。
.Hot track鼠標熱點跟蹤。
(2)旋轉(zhuǎn)按鈕控件的基本操作
基本操作包括基數(shù)、范圍、位置設(shè)置和獲取,分別說明如下:
基數(shù)的設(shè)置和獲取
成員函數(shù)SetBase是用來設(shè)置其基數(shù)的,其原型如下:
int SetBase(int nBase);
此成員函數(shù)用來設(shè)置一個旋轉(zhuǎn)按鈕控件的基數(shù).這個基數(shù)值決定了伙伴窗口顯示的數(shù)字是十進制的還
是十六進制的.十六進制的數(shù)總是無符號的;十進制的數(shù)是有符號的.如果成功則返回先前的基數(shù)值,
如果給出的是一個無效的基數(shù)則返回一個非零值。參數(shù)nBase表示控件的新的基數(shù).
與此函數(shù)相對應的是獲取一個旋轉(zhuǎn)按鈕控件的基數(shù)的成員函數(shù):UINT GetBase()const;
范圍及當前位置的設(shè)定和獲取
成員函數(shù)SetPos、SetRange是用來設(shè)置一個旋轉(zhuǎn)按鈕控件的當前位置和范圍,其原型如下:
int SetPos(int nPos);
參數(shù)nPos表示控件的新位置.這個值必須在控件的上限和下限指定的范圍之內(nèi).
void SetRange(int nLower,int nUpper);
void SetRange32(int nLower,int nUpper);
參數(shù)nLower和nUpper表示控件的上限和下限.任何一個界限值都不能大于UD_MAXVAL或小于
UD_MINVAL。另外,兩個界限值之間的差值必須不超過UD_MAXVAL。成員函數(shù)SetRange32為此
旋轉(zhuǎn)按鈕控件設(shè)置32位的范圍。
與上述函數(shù)相對應的成員函數(shù)有:
int GetPos()const;
DWORD GetRange()const;
void GetRange(int& lower,int& upper)const;
void GetRange32(int& lower,int& upper)const;
其他操作成員函數(shù)
CWnd* SetBuddy(CWnd* pWndBuddy);
此成員函數(shù)用來為一個旋轉(zhuǎn)控件設(shè)置伙伴窗口。返回值一個指向先前的伙伴窗口的指針。參數(shù)
pWndBuddy表示指向新的伙伴窗口的指針。
BOOL SetAccel(int nAccel,UDACCEL* pAccel);
此成員函數(shù)用來設(shè)置一個旋轉(zhuǎn)按鈕控件的加速。如果成功則返回非零值;否則返回0。參數(shù)nAccel表
示由pAccel指定的UDACCEL結(jié)構(gòu)的數(shù)目.pAccel指向一個UDACCEL結(jié)構(gòu)數(shù)組的指針,該數(shù)組包含了加速
信息,其結(jié)構(gòu)如下:
typedef struct{
UINT nSec;//位置改變前所等待的秒數(shù)。
UINT nInc;//位置增量。
}UDACCEL,FAR* LPUDACCEL;
與上述函數(shù)相對應的成員函數(shù)有:
CWnd* GetBuddy()const;
UINT GetAccel(int nAccel,UDACCEL* pAccel)const;
(3)旋轉(zhuǎn)按鈕控件的通知消息
旋轉(zhuǎn)按鈕控件的通知消息只有一個:UDN_DELTAPOS,它表示控件的位置將要改變。
用ClassWizard可以映射此消息,在此消息的處理函數(shù)中有個NM_UPDOWN結(jié)構(gòu)需要進行
說明,其結(jié)構(gòu)如下:
typedef struct _NM_UPDOWN{
NMHDR hdr; //通知代碼的其他信息
int iPos; //當前位置
int iDelta; //位置的增減量,單擊向上箭頭此值為負數(shù)
}NMUPDOWN,FAR* LPNMUPDOWN;
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mfc中滑動條的使用
CSpinButtonCtrl
VC常用控件簡介 - 電腦編程技巧與維護
MFC 之 對話框編程入門(上、中、下)
VS2010/MFC編程入門之二十二(常用控件:按鈕控件Button、Radio Button和Check Box)
SendMessage函數(shù)的常用消息及其應用大全
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服