WEB开发网
开发学院软件开发VC 让你的软件界面更漂亮(六)-- 仿QQ主界面之ListC... 阅读

让你的软件界面更漂亮(六)-- 仿QQ主界面之ListCtrl

 2007-12-30 21:37:45 来源:WEB开发网   
核心提示: #define TVS_VIDEO 0x00000001 //有视频设备标志#define TVS_MOBILEMSG 0x00000002 //可用手机SMS标志#define TVS_NETDISK 0x00000004#define TVS_LEADER0x00000008#defi

#define    TVS_VIDEO       0x00000001 //有视频设备标志
#define    TVS_MOBILEMSG     0x00000002 //可用手机SMS标志
#define    TVS_NETDISK      0x00000004
#define    TVS_LEADER      0x00000008
#define    TVS_VICELEADER    0x00000010
#define    TVS_ONLINEUSER    0x00000020
e.添加成员变量 及并在构造函数中初始化CFont* m_pFont;     //用于创建选择字体
BOOL m_bOverImage;   
BOOL m_bOverVedio;   
BOOL m_bOverMobile;
DEQUELVITEM m_DequeList; //用户信息链表
HICON m_hTailIconA;        //vido flag
HICON m_hTailIconB;     //mobil message flag
HICON m_hTailIconC;     
HBITMAP m_hBackBitmap;   //背景

f.添加部分成员函数

重载InsertItem函数,用于增加Item同时增加用户信息。

InsertItem(int nItem, LPCTSTR szItemText, int nImageIndex, LUSERITEM* UserInfo)
{
  DEQUELVITEM* pDeqListItem = &m_DequeList;
  if(UserInfo)
    pDeqListItem ->push_back(*UserInfo);
  nItem = CListCtrl::InsertItem(nItem,szItemText,nImageIndex);
  return nItem;
}
添加设置显示图标函数,A指定视频标志图标,B指定为短消息标志图标,C未定义void CMyListCtrl::SetTailIcon(LPCTSTR strIconFileA,LPCTSTR strIconFileB,LPCTSTR strIconFileC)
{
  HICON hIcon=NULL;
  hIcon = (HICON)::LoadImage(NULL, strIconFileA, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
  if(hIcon)
  {
     if(m_hTailIconA)
        DeleteObject(m_hTailIconA);
     m_hTailIconA = hIcon;
  }
  hIcon = (HICON)::LoadImage(NULL, strIconFileB, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
  if(hIcon)
  {
     if(m_hTailIconB)
        DeleteObject(m_hTailIconB);
     m_hTailIconB = hIcon;
  }
  hIcon = (HICON)::LoadImage(NULL, strIconFileC, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
  if(hIcon)
  {
     if(m_hTailIconC)
        DeleteObject(m_hTailIconC);
     m_hTailIconC = hIcon;
  }
}
添加设背景位图函数SetBackBitmapvoid CMyListCtrl::SetBackBitmap(LPCTSTR lpszResourceName)
{
  HBITMAP hBmp = (HBITMAP)::LoadImageFile(lpszResourceName);
  if(hBmp)
     m_hBackBitmap = hBmp;
}
添加删除用户信息函数BOOL DeleteUserInfo(CString szText)
{
  BOOL bRet = FALSE;
  LUSERITEM itemInfo;
  DEQUELVITEM* pDeqItem = &m_DequeList;
  int nItemCount = -1;
  DEQUELVITEM::iterator it,itbegin = pDeqItem->begin(),itend = pDeqItem->end();
  for ( it = itbegin; it != itend; it++ )
  {
     nItemCount++;
     if(( it->szUserID == szText)||(it->szUserName == szText))
     {
        if ( nItemCount == ( pDeqItem->size() - 1 ) )
        {
           //如果是最后一个
           pDeqItem->pop_back();
        }
        else if ( nItemCount == 0 )
           //如果是第一个
           pDeqItem->pop_front();
        else
           pDeqItem->erase( pDeqItem->begin() + nItemCount );
        bRet = TRUE;
     }
  }
  return bRet;
}

三、自绘代码全部在OnPaint()中实现 ,为了节省篇幅这里省略,请参考源码。

四、结束语

为了让VC程序员编写聊天软件时能够更好地美化其软件界面,本人写了这样CMyListCtrl 并给出了其源码,希望对大家有所启发!CMyTreeCtrl的自绘的实现也是大同小异,有兴趣的可去试试!。有任何问题请和本人联系:song_0962@sina.com (QQ:34544052)

让你的软件界面更漂亮(六)-- 仿QQ主界面之ListCtrl

(全文完)

上一页  1 2 3 4 

Tags:软件 界面 漂亮

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接