开发学院软件开发VC 类似 MSN 带转义字符的信息发送框的制作(下) 阅读

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

 2006-07-23 11:24:47 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 一、实现了上回说到的多功能文本框之后,接下去的任务就是做一个表情符号选择器,类似 MSN 带转义字符的信息发送框的制作(下),CIconPicker,说明:本来是想实现图标选择的,&m_BitmapArray)){m_pIconContainer->ShowWindow(SW_S

本文示例源代码或素材下载

一、实现了上回说到的多功能文本框之后,接下去的任务就是做一个表情符号选择器。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()函数,如下:

    1 2 3  下一页

    Tags:类似 MSN 转义

    编辑录入:爽爽 [复制链接] [打 印]
    []
    • 好
    • 好的评价 如果觉得好,就请您
        0%(0)
    • 差
    • 差的评价 如果觉得差,就请您
        0%(0)
    赞助商链接