CIPAddressCtrl控件的用法

1.通過Create函數手動創建一個IP控件. 
開始時我在OnInitDialog()函數中這樣寫的: 
CIPAddressCtrl IPAddress; 
UINT nID=101; 
IPAddress.Create(WS_CHILD |WS_VISIBLE ,CRect(20,20,300,43),this,nID); 
但運行之後看不到有IP控件出來,後來才發現原來我的IPAddress是一個局部變量,當OnInitDialog()函數返回時,這個變量就撤銷了. 
所以不會有控件出來!! 
只要把CIPAddressCtrl IPAddress;放到頭文件中定義爲成員變量就OK了!

如果上面的Create函數的第一個參數沒有|WS_VISIBLE;我們可以Create函數後加這一句:IPAddress.ShowWindow(SW_SHOW); 
感覺上Create函數在每一個控件裏都有,創建的方法也是大同小異了吧!

2.下面的是我在基於一個對話框的工程中添加一個IP控件中所寫的: 
先獲得控件的指針: 
CIPAddressCtrl * pIP=(CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS);

void ClearAddress( ); 
這個函數將IP控件裏的內容清空. 
BOOL IsBlank( ) const; 
這個函數是當IP控件裏一個數字都沒有才返回真的,全爲0都返回假,0也是數字!調用ClearAddress( )後剛好可以使IsBlank()反回真. 
測試代碼如下: 
pIP->ClearAddress(); 
if(pIP->IsBlank()) 

     MessageBox("IP全爲空"); 
}

int GetAddress(BYTE& nField0, BYTE& nField1, BYTE& nField2, BYTE& nField3); 
int GetAddress(DWORD& dwAddress); 
當控件內容爲空時,即沒有數字,連0也沒有,返回0,0,0,0.和控件全爲0的情況一樣! 
獲得IP地址:(兩種方法,選其一)

BYTE nf1,nf2,nf3,nf4; 
pIP->GetAddress(nf1,nf2,nf3,nf4); 
CString str; 
str.Format("%d.%d.%d.%d",nf1,nf2,nf3,nf4);//這裏的nf得到的值是IP值了. 
MessageBox(str);

/* 
DWORD dw; 
pIP->GetAddress(dw); 
CString str; 
WORD hiWord=HIWORD(dw); 
WORD loWord=LOWORD(dw); 
BYTE nf1=HIBYTE(hiWord); 
BYTE nf2=LOBYTE(hiWord); 
BYTE nf3=HIBYTE(loWord); 
BYTE nf4=LOBYTE(loWord); 
str.Format("%d.%d.%d.%d",nf1,nf2,nf3,nf4); 
MessageBox(str); 
*/

void SetAddress(BYTE nField0, BYTE nField1, BYTE nField2, BYTE nField3); 
void SetAddress(DWORD dwAddress); 
設置IP地址:(兩種方法,選其一)

        pIP->SetAddress(127,0,0,1);

pIP->SetAddress((DWORD)0x7F000001);//這兩行的效果都是一樣的!

void SetFieldRange(int nField, BYTE nLower, BYTE nUpper); 
設置每一個域的範圍:(nField是0到3的值,nLower和nUpper的範圍都是0到255.可以超出範圍,但控件也還是默認設置回0到255的!

pIP->SetFieldRange(0,5,127);//設置每一個域的範圍,第一個參數是域的下標,第二和第三個是範圍. 
pIP->SetFieldRange(1,5,127);//當輸入比5少時,如0,當失去輸入焦點時,它會重置爲5. 
pIP->SetFieldRange(2,5,127);//當輸入比127大時,如128,它會自動變回127 
pIP->SetFieldRange(3,5,127);

void SetFieldFocus(WORD nField); 
nField的值爲0到3;表示域的下標!該函數是使輸入焦點落在四個域的指定域上; 
這個函數要在消息響應時才能體現出來! 
測試代碼: 
void CTestDlg::OnButton2() 

// TODO: Add your control notification handler code here 
CIPAddressCtrl * pIP=(CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS); 
pIP->SetFieldFocus(2); 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章