浅析Visual C 开发实现方法
创始人
2024-06-21 04:50:56
0

其实Visual C++不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境,对于Visual C++这些组件通过一个很重要的组件集成为一个良好的开发环境,还有一些对Visual C++开发实现方法介绍。

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

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

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

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

在任务条上显示图标是利用系统API函数Shell_NotifyIcon()来将一个图标显示在任务栏的通告区中。该函数的原型为:BOOL Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA pnid); 该函数的第一个参数dwMessage类型为DWORD,表示要进行的动作,它可以是下面的值之一:

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

NIM_ADD:添加一个图标到任务栏。NIM_MODIFY:修改状态栏区域的图标。NIM_DELETE:删除状态栏区域的图标。IM_SETFOCUS:将焦点返回到任务栏通知区域。当完成用户界面操作时,任务栏图标必须用此消息。例如,如果任务栏图标正显示上下文菜单,但用户按下"ESCAPE"键取消操作,这时就必须用此消息将焦点返回到任务栏通知区域。

NIM_SETVERSION:指示任务栏按照相应的动态库版本工作。第二个参数pnid是NOTIFYICONDATA结构的地址,其内容视dwMessage的值而定。这个结构在SHELLAPI.H文件中定义如下:

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

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...