200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > VC 制作IP地址输入框

VC 制作IP地址输入框

时间:2024-02-14 15:17:54

相关推荐

VC 制作IP地址输入框

VC 制作IP地址输入框

前段时间做一个小程序要用到IP地址输入框,VC自带有一个IP地址输入框控件 IP Address ,但是不能全选,复制、粘贴时很不方便,所以决定自己做一个IP地址输入框。

制作过程很简单,几步就可以完成了

1.先用VC新建一个基于对话框的工程。放入一个EDIT控件。

2.在ClassView中添加新的类 CMyIPEdit ,类的类型为MFC Class,基类为 CEdit

3.在CMyIPEdit类中利用ClassWizard添加消息处理 WM_CHAR ,并添加相应代码

void CMyIPEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default /* OH.C QQ:569742950 */ DWORD dwPos=GetSel() & 0xFFFF; //获取鼠标当前位置 int len; //编辑框的文本长度 CString s,tmpS; //s:编辑框原来的字串加上刚输入的字符;tmpS:用于后面获得原来的字串中“.”的数目 CMyIPEdit::GetWindowText(s); CMyIPEdit::GetWindowText(tmpS); len=s.GetLength(); s+=nChar; //加上刚输入的字符 if(dwPos==0&&nChar==46) //不允许在第一位输入点 return; int count=-1; //“.”的数量 int i=-1; //临时变量 BOOL bDot=TRUE; //是否可以再输入. (即“.”的数目大于3个) TRUE:可以再输入点;FALSE:不能再输入点 if(tmpS.GetAt(len-1)==46&&nChar==46) //如果最后一个字符是“.”,则不允许再输入一个点 return; do //获取“.”的数量 { count++; i=tmpS.Find(46,i+1); }while(i!=-1); if(count>=3) //如果“.”大于或等于3个,设为FALSE bDot=FALSE; if(!bDot&&nChar==46) //如果不允许输入点,并且当前输入的字符为“.” return; CEdit::OnChar(nChar, nRepCnt, nFlags); i=s.ReverseFind(46); //获取最后一个“.”的位置 if(len-i==3&&len!=3) //用字串长度减去最后一个“.”的位置,等于3则在后面加多一个点 { if(!bDot) //判断能否再输入点 return; s+=46; CEdit::SetWindowText(s); SetSel(dwPos+2,dwPos+2,FALSE); //将鼠标移至相应位置 } }

接下来就是要把原来的编辑框变为我们自己的IP地址框了

在对话框的类添加新的成员变量,类型为 CMyIPEdit ,变量名为 m_MyIPEdit (图2.jpg)

在对话框类的OnInitDialog中添加代码

m_MyIPEdit.SubclassDlgItem(IDC_EDIT1,this);

现在可以编译运行了

因为使用了GetAt() ,所以不要在Debug状态下运行,要在Release才不会出错。网上说在使用GetAt()之前要ReleaseBuffer() 我试了一下还是不行,不知道是为什么。

这里只是简单地实现了IP地址框的部份功能,大家可以对其进行完善,应该比较简单。

可能还有更好的方法,希望可以留言,让大家一起分享

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。