在使用duilib时,发现本来的库并没有提供IP控件,如是自己想到绘制IP控件,控件的绘制不难,首先复制UIEdit的两个文件,命名为UIIPEdit,更改完成后,便可以进行修改绘制IP控件。

  绘制难道主要在鼠标点击的时候,标亮所选择的IP的第几个值,解觉得整个问题其实也很简单,步骤如下:

  1.响应鼠标按下和双击消息

  2.响应后,根据鼠标位置,判断当前鼠标点击所在啊的位置

  3.标亮选中的区域

  那如何由鼠标判断位置嘞?做法是获取每个文字所占的鼠标位置。由于,字体大小是变化的,获取位置时需要借助win API GetTextExtentPoint32,由此API可以获取字体SIZE,然后通过获取鼠标点击的位置来判断标亮选择那个位置,代码如下:

        HFONT nFont = m_pOwner->GetManager()->GetFont(m_pOwner->GetFont());//得到当前字体

        ///::CClientDC dcClient(m_hWnd);
HDC hHdc = ::GetDC(m_hWnd);//由句柄获取当前HDC
HFONT nOldFont = SelectFont(hHdc,nFont);//选择当前字体 SIZE sizeIP1 = {};
::GetTextExtentPoint32(hHdc,m_pOwner->GetText(),,&sizeIP1); SIZE sizeIP2 = {};
::GetTextExtentPoint32(hHdc,m_pOwner->GetText(),,&sizeIP2); SIZE sizeIP3 = {};
::GetTextExtentPoint32(hHdc,m_pOwner->GetText(),,&sizeIP3); SIZE sizeIP4 = {};
::GetTextExtentPoint32(hHdc,m_pOwner->GetText(),,&sizeIP4); SelectFont(hHdc,nOldFont);//恢复旧字体 ::ReleaseDC(m_hWnd, hHdc);//释放句柄 if(sizeIP1.cx >= pt.x &&pt.x >= )//判断光标区域
{
//pEdit->SetFocus();
m_pOwner->SetSel(,);
m_enType = POS_IP1; //pEdit1->SetFocus();
}
else if(pt.x > sizeIP1.cx && pt.x <= sizeIP2.cx)//判断光标区域
{
m_pOwner->SetSel(,);
m_enType = POS_IP2; }
else if(pt.x > sizeIP2.cx && pt.x <= sizeIP3.cx)//判断光标区域
{ m_pOwner->SetSel(,);
m_enType = POS_IP3; }
else if(pt.x > sizeIP3.cx && pt.x <= sizeIP4.cx)//判断光标区域
{
m_pOwner->SetSel(,);
m_enType = POS_IP4; }

  判断了区域后,剩下的就是输入了,由于IP有限制,不能超过255,所以输入时要做判断。输入时,响应WM_CHAR消息,在此消息中,对输入的数字做判断和边界处理。解决了难点,IP控件,也就绘制成功,如有问题,欢迎一起讨论。

duilib 绘制IP控件的更多相关文章

  1. duilib修复ActiveXUI控件bug,以支持flash透明动态背景

    转载请说明原出处,谢谢~~ 昨天在QQ控件里和同学说起QQ2013登陆窗体的开发,从界面角度考虑,单单一个登陆界面是很容易做出来的.腾讯公司为了 防止各种盗号行为可谓煞费苦心,QQ2013采用了动态背 ...

  2. 改进duilib的richedit控件的部分功能

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41208207 如果要使用透明异形窗体功能,首先要改进duilib库让他本 ...

  3. 将webkit内核封装为duilib的浏览器控件

    转载请说明出处,谢谢~~ 原本的duilib是自带浏览器控件的,但是使用了IE内核,我在做仿酷狗音乐播放器时,在右侧乐库要用到浏览器控件,而我使用自带的IE控件却发现了不少缺点,这也是duilib一直 ...

  4. WM_ERASEBKGND官方解释(翻译),以及Delphi里所有的使用情况(就是绘制窗口控件背景色,并阻止进一步传递消息)

    #define WM_ERASEBKGND                   0x0014 Parameters wParam A handle to the device context. //  ...

  5. C#自定义ip控件

    前言:由于项目中有ip输入,但C#中又没有IP控件,如果直接放4个TextBox感觉又怎么好,还不好控制,于是可以通过自定义控件的方式来解决,就又了下面的自定义ip控件,该控件功能基本完善,如果还有未 ...

  6. Android中自定义IP控件

    最近在搞Android项目,之前并没有系统的去学过这方面的编程,只能边看书边撸代码.在项目的开发的过程中,需要一个IP控件,后面了解到Android中并没有这样的控件,于是网上搜索,发现得到的结果并不 ...

  7. 百度地图API示例:鼠标绘制点线面 控件修改

    需求 :在使用地图API时,绘制工具栏控件想自己选择哪些要,哪些不要. 可以查看相应的类:官网地址: http://api.map.baidu.com/library/DrawingManager/1 ...

  8. duilib 增加gif控件(基于gdi+,可控制播放暂停,自动设置大小)

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42502081 因为项目需要我需要给duilib增加一个gif控件,目前已 ...

  9. Duilib教程-控件练习

    一.控件消息的响应. 在HelloDuilib例子中,程序不能退出,在这里,我将添加一个关闭按钮,当点击它时,调用PostQuitMessage进行退出. 首先在界面的右上角添加一个关闭按钮,并取名为 ...

随机推荐

  1. (中等) POJ 3034 Whac-a-Mole,DP。

    Description While visiting a traveling fun fair you suddenly have an urge to break the high score in ...

  2. [转]SQL Server® 2008 R2 Express 静默安装

    1. http://msdn.itellyou.cn/下载Express版SQL Server 2.快捷键win+R,进入CMD,解压文件,解压命令为 <文件名>.exe /x <解 ...

  3. jsp 获取应用目录

    ${pageContext.request.contextPath}  //   应用名为“demo1” 则得到的是"/demo1" <script>$(documen ...

  4. IOS block 对象强引用和若引用

    1. 在block外面这样:__weak MyController *weakSelf = self 或者 __weak __typeof(self) weakSelf = self;是为了防止强引用 ...

  5. PHP下的命令行执行

    PHP 的命令行模式 以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参数. Usage: php [options] [ ...

  6. Selenium2(java)启动常用浏览器 三

    默认启动firefox浏览器 Webdriver driver = new FirefoxDriver(); 启动谷歌浏览器 配置chromedriver WebDriver driver; Syst ...

  7. 医院his系统数据库恢复

    医院IT系统的重要性堪比金融行业,“银行系统宕机,老百姓不能取钱:医院HIS系统宕机,老百姓不能看病”, 医院信息系统称得上是迄今为止企业级信息系统中最复杂的一类.  某医院HIS系统SQL2008数 ...

  8. iOS 选择框 单选框

    UIButton *checkbox = [UIButton buttonWithType:UIButtonTypeCustom]; CGRect checkboxRect = CGRectMake( ...

  9. UVa 311 - Packets

    题目大意:有1X1,2X2 ... 5X5,6X6六种类型的物品,把他们装进6X6的盒子里,求使用的最少盒子数. 贪心吧,其实一看就知道思路了,算是常识吧,装物品时通常都是先装大的,再在其余空间放小的 ...

  10. 纯css三角形

    三角形原理: 盒子c内容width为0,height为0,盒子给一定宽度的border,分别为四边的border设置不同的颜色,则可以得到不同样式的三角形举个简单的栗子:CSS代码 .box1{ wi ...