怎样实现VisualC++系统托盘

微软中国公司与1993年推出的Visual C++1.0后,Visual C++已成为专业程序员进行软件开发的首选工具,随着时代的进步科技的发展Visual C++版本也快速的提升与升级,Visual C++开发也变成了一件容易的事情了。

站在用户的角度思考问题,与客户深入沟通,找到蕉城网站设计与蕉城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网络空间、企业邮箱。业务覆盖蕉城地区。

这些程序运行时不显示运行窗口,只在任务栏上显示一个图标,表示程序正在运行,用户可以通过鼠标与应用程序交互,程序开发人员有时也需要编制一些仅在后台运行的类似程序,为了不干扰前台程序的运行界面和不显示不必要的窗口,应使程序运行时的主窗口不可见。

同时将一个图标显示在任务栏右端静态通告区中并响应用户的鼠标动作。本实例就介绍Visual C++开发这类程序的设计方法,该程序编译运行后,如果双击托盘图标,程序会弹出一个消息列表窗口,只要鼠标在托盘图标上移动或点击(无论是左右键的单击或双击),产生的消息都会显示在这个窗口里;当鼠标光标移到托盘图标上时,在图标附近会显示提示信息;#t#

单击右键时弹出上下文菜单,这个菜单中应包含打开属性页的命令或者打开与图标相关的其它窗口的命令,另外,该程序还可以动态的改变托盘的图标。参照这个例子,相信读者能轻松自如地在自己的程序中应用系统托盘。

一、实现方法

为了实现拖盘程序,首先要使程序的主窗口不可见,这点实现起来十分容易,只要调用ShowWindow(SW_HIDE)就可以了,本实例采用的就是这种方法,还有一种思路是通过分别设置主边框窗口的风格和扩展风格来隐藏主框架:

 
 
 
  1.   BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)   
  2.  
  3.   {   
  4.  
  5.    cs.style =WS_POPUP;//使主窗口不可见;   
  6.  
  7.    cs.dwExStyle  =WS_EX_TOOLWINDOW;//不显示任务按钮;   
  8.  
  9.    return CFrameWnd::PreCreateWindow(cs);   
  10.  
  11.   }  

在任务条上显示图标是利用系统API函数Shell_NotifyIcon()来将一个图标显示在任务栏的通告区中。该函数的原型为:  

 
 
 
  1.   BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)   
  2.  
  3.   {   
  4.  
  5.    cs.style =WS_POPUP;//使主窗口不可见;   
  6.  
  7.    cs.dwExStyle  =WS_EX_TOOLWINDOW;//不显示任务按钮;   
  8.  
  9.    return CFrameWnd::PreCreateWindow(cs);   
  10.  
  11.   }  

在该结构的成员中,cbSize为该结构所占的字节数,hWnd为接受该图标所发出的消息的窗口的句柄(鼠标在任务栏上程序图标上动作时图标将发出消息,这个消息用户要自己定义),uID为被显示图标的ID,uFlags指明其余的几个成员(hIcon、uCallBackMessage和szTip)的值是否有效。

uCallbackMessage为一个用户自定义的消息,当用户在该图标上作用一些鼠标动作时,图标将向应用程序的主框架窗口(hWnd成员中指定的窗口)发出该消息,为了使程序的主框架得到该通知消息,Visual C++开发需要设置NOTIFYICONDATA 结构的flag成员的值为NIF_MESSAGE。hIcon为将在任务栏上显示的图标句柄,szTip鼠标停留在该图标上时显示的提示字符串。

网页标题:怎样实现VisualC++系统托盘
标题路径:http://www.shufengxianlan.com/qtweb/news8/227708.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联