类似MSN带转义字符的信息发送框的制作(下)

一、实现了上回说到的多功能文本框之后,接下去的任务就是做一个表情符号选择器。CIconPicker。

说明:本来是想实现图标选择的,但是后来有需要改成了位图选择器,但是类名没有改过来,还是叫 CIconPicker。附带工程中有图标选择器。

二、图标/位图选择器(以下简称选择器)的实现原理

当用户按下选择器的时候,应该把所有的图像用一个图片列表显示出来;如果用户选择了其中一个图片,则记录该图片的编号,并把图片列表关闭。如果用户没有选择图片 ,那么直接把图片列表关闭 ( 响应 WM_KILLFOCUS 消息 )。

首先,从 CButton 派生一个类 CIconPicker 。给它增加一些成员用来实现"选择器"的功能。如下所述:

  • 1、图片列表:CArray 存放所有下拉图片,每个图片都有一个编号,即它在图片数组中的序号
  • 2、GetBitmapAt():顾名思义,按序号获取图片
  • 3、AddBitmap():添加一张图片
  • 4、GetCurrentBitmapIndex():返回选中图片的序号

    当 CIconPicker 收到 WM_LBUTTONDOWN 消息时先不忙给父窗体发送 WM_COMMAND消息 ,而是创建一个图片列表CIconContainer(容器),然后在容器上面创建和图片数量一样多的按钮,每个按钮显示一张图片。当然,为了

    实现这个功能还得从CButton再派生一个类CInnerButton用来显示图片,感应鼠标事件。

    三、源代码说明

    1、创建容器

    void CIconPicker::OnLButtonDown(UINT nFlags, CPoint point)
    {
       if(m_bState) return ;
       m_bState=TRUE;
       this->SetState(TRUE);
      
      
       RECT rect;
       this->GetWindowRect(&rect);
      
       POINT pt;
       pt。x=rect。left;pt。y=rect。bottom;
      
       //创建一个图片列表容器
       m_pIconContainer=new CIconContainer;
      
       ///把图片数组当作参数传过去
       if(m_pIconContainer->Create(pt,this,&m_BitmapArray))
       {
         m_pIconContainer->ShowWindow(SW_SHOW);
         m_pIconContainer->UpdateWindow();
         m_pIconContainer->SetFocus();
       }
    }

    2、为每一张图片在容器内创建一个按钮CInnerButton。我把这个工作交给容器来完成。重载容器(CIconContainer)的Create()函数,如下:

时间: 2024-10-01 22:12:09

类似MSN带转义字符的信息发送框的制作(下)的相关文章

类似MSN信息发送框的制作(上)

一.引言 用 MSN 和 QQ 等聊天的时候,当用户输入特定意义的字符串时,系统回自动用一张小图片替代.比如输入" : ) "系统 会用一个小笑脸代替.我要实现的就是这样一个信息输入框 .这个信息输入框由两部分组成:图案选择器和多功能文本框.本篇介绍多功能文本框. 二.原理简介 1.主要功能用CRichEditCtrl实现,像设置字体,设置字体颜色,字号等等CRichEditCtrl都提供了很完善的支持,我就不一一赘述了. CRichEditCtrl 主要的不足在于以下几个方面: (1

MSN频现骚扰信息:官方称是机器自动生成

MSN何以成为垃圾信息重灾区 "你的MSN有没有一上线就被一堆人英文调侃问候?"近日,通讯方式基本靠MSN的白领群体频频遭遇类似的骚扰,更为严重的甚至直接是病毒,即便是已经升级到MSN目前的最高级别版本,也丝毫无法改变骚扰信息的强劲势头. 记者在调查过程中发现,这种MSN骚扰信息在各大白领群体中并不鲜见,一旦用户通过验证,那么,即使用户发现后立即删除了该联系人,也很难保证对方不会再发送此前的骚扰信息. MSN频现骚扰信息 不少白领已经习惯了这样的流程:到了公司以后,打开电脑,然后登陆M

win-【Win32编程】如何获取带ES_PASSWORD属性的编辑框内的文本

问题描述 [Win32编程]如何获取带ES_PASSWORD属性的编辑框内的文本 求大神!!! 已获取到其他软件编辑框的句柄,如何获取那个编辑框内的文本(编辑框有PASSWORD属性)??? 我使用SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)szText);可以获取没有PASSWORD属性的编辑框内的文本,获取不了带ES_PASSWORD属性的编辑框内的文本. GetWindowText(hWnd, str, 100);也不性 解决方案 http://www

打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回

在调试wcf程序的时候,有时会遇到下面的错误: System.ServiceModel.FaultException: 由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或在打开每个 Microsoft .NET Framework 3.0 SDK 文档的跟踪的同时检查服务器跟踪

c语言-需求一段C语言代码实现将信息发送到指定邮箱

问题描述 需求一段C语言代码实现将信息发送到指定邮箱 用C语言编写一个代码,将本机信息(比如说IP地址等)发送到一个指定的邮箱. 解决方案 http://genius.iteye.com/blog/372272 解决方案二: 有的时候,百度真的很管用 解决方案三: http://www.cnblogs.com/hongzg1982/articles/2479626.html 解决方案四: 这个问题太泛泛了,比如你打算在window下实现还是在linux下实现,是仅仅实现这个功能,还是可以用Qt,

focus-Android为View设置带自定义动画的焦点框动画

问题描述 Android为View设置带自定义动画的焦点框动画 当一个View被Focus的适合会被一个焦点框包围,这个焦点框是带有一闪一闪的自定义动画的.该怎么样实现? 解决方案 background设置成动画的DrawableAnimationDrawable ad=(AnimationDrawable )view.getBackground();ad.start();这样应该就行了

java邮箱验证email-谁做过java邮箱验证,将验证信息发送到指定的邮箱上去

问题描述 谁做过java邮箱验证,将验证信息发送到指定的邮箱上去 求案例,求API接口文档,求指点···················

mfc-VS2010MFC串口通讯清除接收框的内容时怎么做到保留发送框内容?

问题描述 VS2010MFC串口通讯清除接收框的内容时怎么做到保留发送框内容? VS2010MFC,串口通讯中,点击清除接收框按钮时,怎么做到保留发送框内容? 解决方案 点击接收之后,把发送框内容写到文件里,保存 解决方案二: 你不调用SetDlgItemText(IDC_EDIT_SEND, TEXT(""));这之类的调用就可以吧~

c++-activemp-cpp如何确定发送信息成功,failover模式下如何判断连接状态?

问题描述 activemp-cpp如何确定发送信息成功,failover模式下如何判断连接状态? activemp-cpp如何确定发送信息成功,failover模式下如何判断连接状态?现在是消息生产者,求解答.