设为首页 加入收藏

TOP

26.3.1 标题栏动画图标
2013-10-07 13:12:58 来源: 作者: 【 】 浏览:70
Tags:26.3.1 标题 动画 图标

26.3  动画效果

除了实现静态的多媒体应用外,在VC中可以通过编程(www.cppentry.com)实现动画效果。本节中介绍部分动画效果的实现。26.3.1小节介绍实现标题栏和任务栏的动画图标。26.3.2小节介绍使用DrawIcon()函数实现图标动画。26.3.3小节介绍系统托盘中的动态图标的实现。

26.3.1  标题栏动画图标

通过定时器,可以实现标题栏显示动画图标的效果。在程序启动时,首先设置图标列表,并启动定时器,定时器每次获取当前索引下的图标句柄,并发送WM_SETICON消息给主对话框,这样,看上去标题栏上显示的是动画图标。代码如下:

  1. BOOL CMainFrame::SetTBImageList(int imageListID,int
    iMaxIcons, COLORREF tc)  
  2.                                                    
    // 设置大图标  
  3. {  
  4.     if(iMaxIcons <= 0) return false;               
    // 判断传入的参数有效性  
  5.     m_iMaxTBIcon = iMaxIcons;                      
    // 记录变量值  
  6.     VERIFY(m_TBImgList.Create(imageListID, 16, 1, tc));  
  7.                                                   
    // 创建图标列表  
  8.     return true;                                  
    // 函数返回  
  9. }  
  10. BOOL CMainFrame::ShowTBNextIcon()                 
    // 设置下一个图标  
  11. {  
  12.     if(m_TBImgList.m_hImageList == NULL) return
    false; // 判断图标列表是否有效  
  13.     m_iTBIconCounter++;                           
    // 图标计数器增一  
  14.     if(m_iTBIconCounter >= m_iMaxTBIcon)   
    m_iTBIconCounter =0;  
  15.                                                    
    // 如果大于最大值,归0  
  16.     hTBIcon = m_TBImgList.ExtractIcon
    (m_iTBIconCounter);        // 析出图标  
  17.     // 设置新图标,并保存原来的图标  
  18.     HICON hPrevIcon =  
  19.         (HICON) AfxGetMainWnd()->SendMessage
    (WM_SETICON,true,(LPARAM)  
  20.         hTBIcon);  
  21.     // 释放原来的图标  
  22.     if (hPrevIcon)  DestroyIcon(hPrevIcon);  
  23.     return true;                                   
    // 函数成功返回  

在上面代码中,SetTBImageList()函数用于初始化图标列表。ShowTBNextIcon()函数用于定时显示当前索引处的图标,显示完成后,并修改当前索引数。获取当前索引处的图标后,发送WM_SETICON消息,并将获得的图标句柄作为参数传递给主对话框。运行程序,就可以看到在动态变化的标题栏图标。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇26.3.3 系统托盘动态图标 下一篇26.4.4 播放VCD

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: