亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用Windows系統提供的IP控件

2019-11-17 05:12:27
字體:
來源:轉載
供稿:網友
在網絡程序中,我們經常碰到需要用戶輸入ip地址的情況。然而C++ Builder并沒有為我們提供可以用于輸入IP串的控件,于是我們只好用TEdit控件(單行文本框)來接受用戶輸入的IP串。但是,使用TEdit來輸入IP串并不是一個好的主意,因為處理起來非常不方便。
事實上,在我們的身旁有一個專門用來輸入IP串的Windows控件,就象網絡鏈接屬性中, Internet 協議 (TCP/IP) 屬性中輸入IP的控件。IP控件會拒絕非法的IP串(在每個部分只能輸入0~255之間的數字);它讓你可以輕松地獲取控件中的IP串所對應的IP值(32位整數),這省去了IP串和IP值之間相互轉換的麻煩;此外,你還能限制IP控件中所能輸入的IP的范圍。在本文中,我將向大家介紹如何在我們的C++ Builder程序中使用Windows的IP控件。Windows中有兩個非常重要的動態聯結庫:commctrl.dll和comctl32.dll,它們是Windows的自定義控制庫(Windows Common Controls)。自定義控制庫中包含了許多常用的Windows控件,如Statusbar,Coolbar,HotKey等;在C++ Builder中,這些控件大多數都已被包裝成可視化控件了。在Microsoft推出Internet EXPlorer 3之后,自定義控制庫中新增了一些控件,其中就包括Windows的IP控件(IP Address edit control)?!癯跏蓟疻indows自定義控制庫●Windows提供了兩個API函數,InitCommonControls和InitCommonControlsEx,用來初始化自定義控制庫。從名字我們不難看出這兩個API函數的關系:后者是前者的增強。假如你希望在程序中使用IP控件,你必須用InitCommonControlsEx來完成對自定義控制庫以及類的初始化。函數InitCommonControlsEx的原型如下:typedef strUCt tagINITCOMMONCONTROLSEX {
DWord dwSize;// size of this structure
DWORD dwICC;// flags indicating which classes to be initialized
} INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;
WINCOMMCTRLAPI BOOL WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX);
IP控件屬于ICC_INTERNET_CLASSES類別的控件,假如要使用該控件,你應該在程序中包含如下的初始化代碼:
TInitCommonControlsEx ICC;
ICC.dwSize = sizeof(TInitCommonControlsEx);
ICC.dwICC= ICC_INTERNET_CLASSES;
if(!InitCommonControlsEx(&ICC))
return;//初始化組件失敗
●創建IP控件●Windows API函數CreateWindow或者CreateWindowEx都可以用來創建一個IP控件實例。IP控件的窗口類名為"SysIPAddress32",C++ Builder的commctrl.pas單元為其定義了一個符號常量WC_IPADDRESS。下面這條語句將在Form1上創建一個IP控件。HWND hIpEdit = CreateWindow(WC_IPADDRESS,NULL,WS_CHILDWS_VISIBLE,10,10,135,47,Handle,0,HInstance,NULL);●使用IP控件●在程序中,我們通過向IP控件發送消息來與它通訊。IP控件可以響應的消息有以下6個,這些消息及它們的含義見下表:消息常量消息值作用參數及返回值IPM_CLEARADDRESSWM_USER+100清除IP控件中的IP串參數無IPM_SETADDRESSWM_USER+101設置IP控件的IP串Lparam為32位的IP值IPM_GETADDRESSWM_USER+102獲取IP控件中的IP串所對應的IP值(32位整數)Lparam為一個指向Integer變量的指針。返回值等于IP控件中非控的字段數目;獲取到的IP值存放在lparam 所指向的Integer變量中。IPM_SETRANGEWM_USER+103設置IP控件4個部分的其中一個的IP取值范圍Wparam指明要設置取值范圍的部分;lparam的低16位字為該字段的范圍:高字節為上限,低字節為下限。
IPM_SETFOCUSWM_USER+104設輸入焦點Wparam指明哪個部分獲取焦點IPM_ISBLANKWM_USER+105IP串是否為空參數無。返回值:若為空,返回非0;不為空,返回0★㈠清空IP串(IPM_CLEARADDRESS)★SendMessage(hIpEdit,IPM_CLEARADDRESS,0,0);★㈡設置IP串(IPM_SETADDRESS)★int nIP;
nIP=MAKEIPADDRESS(192,168,0,1);
SendMessage(hIpEdit,IPM_SETADDRESS,0,nIP);
此例將IP控件的內容設為"192.168.0.1",其中MAKEIPADDRESS是一個Win32宏,定義在commctrl.h頭文件中,它用來合成一個32位的IP值:
#define MAKEIPADDRESS(b1,b2,b3,b4)
((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
★㈢獲取IP值(IPM_GETADDRESS)★
int nIP;
SendMessage(hIpEdit,IPM_GETADDRESS,0,int(&nIP));
//nIP++;
//SendMessage(hIpEdit,IPM_SETADDRESS,0,nIP);//將IP加1再賦給IP控件。
若想要獲取IP控件中IP串所對應的IP值,你應該向IP控件發送IPM_GETADDRESS消息,并且需要把一個32位整數的地址作為SendMessage的最后一個參數?!铫柙O置取值范圍(IPM_SETRANGE)★SendMessage (hIpEdit, IPM_SETRANGE, 0, 200<<8100);此語句將IP控件的第一部分的范圍限制為100~200。在IPM_SETRANGE消息中,Wparam指明要設置的字段, 而lparam的低16位字為該字段的范圍:高字節為上限,低字節為下限?!铫樵O置輸入焦點(IPM_SETFOCUS)★SendMessage(hIpEdit,IPM_SETFOCUS,3,0);//將輸入焦點設在IP控件的第四部分。㈥判定IP串是否為空(IPM_ISBLANK)if(!SendMessage(hIpEdit,IPM_ISBLANK,0,0))
{
//IP控件中的IP串為空
}
else
{
//IP控件中的IP串至少有一部分不是空的
}
●IP控件的通知消息●當IP串被改動后或者輸入焦點發生了轉移,IP控件就會向它的父窗口發送通知消息IPN_FIELDCHANGED。在大多數情況下,我們都可以忽略此通知消息。以下是處理通知消息IPN_FIELDCHANGED的一個示例:void __fastcall TForm1::WndPRoc(TMessage &Msg)
{
LPNMHDR p=(LPNMHDR)Msg.LParam;
if(Msg.Msg==WM_NOTIFY)
{
if(p->code==IPN_FIELDCHANGED)
{
//處理IP控件的IPN_FIELDCHANGED通知消息
}
}
TForm::WndProc(Msg);
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线看日韩av| 亚洲图片在区色| 日韩在线观看免费全| 亚洲精品电影久久久| 亚洲人成电影网站色www| 亚洲最新视频在线| 自拍偷拍亚洲区| 久久久久日韩精品久久久男男| 日韩的一区二区| 亚洲精品日韩久久久| 久久五月情影视| 亚洲激情自拍图| 亚洲免费av网址| 亚洲aa中文字幕| 欧美成人性生活| 国产精彩精品视频| 久久躁狠狠躁夜夜爽| 亚洲免费视频观看| 久久精品亚洲国产| 国产91对白在线播放| 日韩av电影在线播放| 91产国在线观看动作片喷水| 91在线视频精品| 日韩动漫免费观看电视剧高清| 亚洲国产精彩中文乱码av在线播放| 国模精品视频一区二区三区| 日韩精品福利在线| 两个人的视频www国产精品| 亚洲第一视频在线观看| 国产精品久久99久久| 欧美激情国产日韩精品一区18| 亚洲一区二区福利| 精品久久香蕉国产线看观看gif| 亚洲国产欧美一区二区丝袜黑人| 亚洲国产97在线精品一区| 国产精品伦子伦免费视频| 国产精品亚洲一区二区三区| 久久影视电视剧凤归四时歌| 狠狠久久亚洲欧美专区| 国产在线视频不卡| 欧美性猛交xxxx黑人猛交| 最近2019年中文视频免费在线观看| 美女久久久久久久| 成人a视频在线观看| 亚洲欧美色婷婷| 国产一区二区三区视频在线观看| 久久久久久91| 亚洲精品欧美日韩专区| 亚洲高清在线观看| 亚洲欧美中文日韩在线v日本| 青青久久aⅴ北条麻妃| www国产精品视频| 欧美成人精品在线观看| 精品国产一区二区在线| 国产一区二区三区三区在线观看| 精品久久久免费| 欧美性高潮在线| 精品亚洲aⅴ在线观看| 九色91av视频| 不卡中文字幕av| 精品国产一区二区三区久久久| 亚洲免费高清视频| 国产欧美日韩丝袜精品一区| 久久久久国产精品免费网站| 欧美高跟鞋交xxxxxhd| 日韩麻豆第一页| 欧美一级视频免费在线观看| 精品日本高清在线播放| 午夜免费在线观看精品视频| 国产精品jizz在线观看麻豆| 久热精品视频在线| 欧美在线视频a| 国产亚洲免费的视频看| 伊人久久综合97精品| www.日韩免费| 秋霞午夜一区二区| 精品自拍视频在线观看| 91亚洲精华国产精华| 欧美麻豆久久久久久中文| 最近2019中文免费高清视频观看www99| 国产免费一区二区三区香蕉精| 欧美激情一级精品国产| 中文字幕国内精品| 国产美女被下药99| 成人写真福利网| 日韩国产高清视频在线| 久热精品视频在线观看| 欧美激情高清视频| 欧美激情精品在线| 狠狠躁天天躁日日躁欧美| 久久99精品国产99久久6尤物| 91黑丝高跟在线| 高跟丝袜一区二区三区| 欧美在线免费观看| 日韩美女在线观看一区| 国产精品亚洲自拍| 久久精品国产欧美亚洲人人爽| 欧美精品www| 8x海外华人永久免费日韩内陆视频| 国产精品揄拍500视频| 日韩av在线资源| 日韩精品免费在线视频| 国产亚洲一区二区在线| 欧美成人高清视频| 亚洲精品电影网站| 久久精品国产一区二区电影| 亚洲国产成人久久综合| 精品久久久久久中文字幕| 日韩精品欧美激情| 日韩高清av一区二区三区| 国产日韩欧美91| 国产亚洲视频在线观看| 韩国19禁主播vip福利视频| 操日韩av在线电影| 亚洲风情亚aⅴ在线发布| 欧美肥老太性生活视频| 亚洲欧美在线免费观看| 日韩在线观看高清| 亚洲性日韩精品一区二区| 亲爱的老师9免费观看全集电视剧| 久久久久久国产精品久久| 国产精品欧美日韩一区二区| 国产日韩在线精品av| 88国产精品欧美一区二区三区| 97在线视频精品| 亚洲自拍偷拍视频| 欧美视频在线免费看| 亚洲一区二区少妇| 久久国产精品首页| 久久精品影视伊人网| 欧美一区二区大胆人体摄影专业网站| 日韩成人在线播放| 欧美色图在线视频| 久久久久久久久久久网站| 国产日韩在线视频| 全球成人中文在线| 国产欧美精品在线播放| 日韩精品在线观看网站| 欧美激情乱人伦一区| 国产精品久久999| 国产精品99久久久久久久久久久久| 美女扒开尿口让男人操亚洲视频网站| 欧美在线激情视频| 久久久视频在线| 亚洲大胆人体在线| 日韩亚洲一区二区| 日韩一区二区三区国产| 欧美激情视频一区二区| 亚洲第一男人av| 日本最新高清不卡中文字幕| 91高清视频在线免费观看| 亚洲久久久久久久久久久| 4438全国亚洲精品在线观看视频| 国产精品久久久久久久久久免费| 久久久久久久久久av| 国产精品av免费在线观看| 国产精品99久久久久久www| 在线免费看av不卡| 亚洲视频国产视频| 最好看的2019年中文视频| 久久国产精品偷| 国内精品一区二区三区四区| 91丝袜美腿美女视频网站| 亚洲成人激情在线观看|