您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:104 来源:vckbase.com

本文章共5310字,分4页,当前第2页,快速翻页:
 


1、 托盘图标应该有信息提示,也就是ToolTips。
2、 单击右键应该弹出上下文菜单,这个菜单中应包含打开属性页的命令或者打开与图标相关的其它窗口的命令。
逆风者
3、 单击左键应该显示进一步的信息或者控制图标所代表的对象,例如,当左键单击声音图标时进行音量控制。如果没有进一步的信息或控制,则不要有任何动作。

CTrayIcon对上面的特性进行了全面的封装。为了示范CTrayIcon的工作原理,本文提供一个例子程序TrayTest1,图一是运行程序后显示的一个对话框:


图一 TrayTest1运行后显示的对话框

当把图标安装到系统托盘之后,如果双击托盘图标,程序会弹出一个消息列表窗口,只要你的鼠标在托盘图标上移动或点击(无论是左右键的单击或双击),产生的消息都会显示在这个窗口里,如图二:


图二 消息显示窗口

当鼠标光标移到托盘图标上时,在图标附近会显示提示信息,如图三:


图三 显示Tooltip

为了正确使用CTrayIcon,首先你必须在程序的某个地方实例化CTrayIcon,例子程序是在主框架中创建CTrayIcon实例的。
Class MainFrame  public CFrameWnd {protected:  CTrayIcon m_trayIcon;                    // my tray icon

…….

};      
然后,你必须提供一个ID。这是在图标生命期内的唯一标示,即便以后你修改了要显示的图标。这个ID也是鼠标事件发生时你将获得的ID。它不一定必须是图标的资源ID,例子程序中这个ID为IDR_TRAYICON,由框架的构造函数CMainFrame通过成员初始化列表对m_trayIcon进行初始化:
CMainFrame::CMainFrame() : m_trayIcon(IDR_TRAYICON){

……

}      
为了添加图标,必须根据具体情况调用下列的 SetIcon 函数之一:
      m_trayIcon.SetIcon(IDI_MYICON);         //资源 ID

      m_trayIcon.SetIcon("myicon");           //资源名

      m_trayIcon.SetIcon(hicon);              //HICON

      m_trayIcon.SetStandardIcon(IDI_WINLOGO);//系统图标      
除了SetIcon(UINT uID)之外,这些函数都有一个LPCSTR类型的可选参数用于指定提示文本。SetIcon(UINT uID)使用ID与uID相同的串资源作为提示文本。例如,TrayTest1有一行代码是这样的:
// (在mainframe.cpp文件中)

m_trayIcon.SetIcon(IDI_MYICON);      
这行代码也设置了提示信息,因为TrayTest1有一个串资源,其ID也是IDI_MYICON。这在TRAYTEST.RC文件中可以看到:
STRINGTABLE PRELOAD DISCARDABLE 

BEGIN 

     IDI_MYICON "双击图标激活 TRAYTEST." 

END      
如果你想改变图标,可以用不同的ID或者HICON再次调用SetIcon函数之一。CTrayTest便会用NIM_MODIFY而不是NIM_ADD来改变图标。相同的函数甚至可以用于删除图标,如:
m_trayIcon.SetIcon(0); //删除图标      
CTrayIcon将此代码解释成NIM_DELETE。你已经看到,所有这些表示行为的编码,标志都被一个使用方便的函数所替代:这都归功于C !现在,我们来看看如何处理通知消息以及前面提到的所有UI特性。通知消息的处理必须要设置图标之前,但是要在创建窗口之后调用CTrayIcon::SetNotificationWnd,做这件事情的最佳场所是在OnCreate处理例程中,TrayTest就是在这里处理的:
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 下一页>>
相关文章

枚举声明,模板函数特化
COM 组件注册方法
关于SendMessage
初试驱动---OV511 摄像头驱动开发
定制编辑框的上下文菜单
ATL布幔之下的秘密(5)
如何在NT下获取进程的路径
如何更改其它程序 ListView 控件中某个 Ite
利用辅助线程更新用户界面UI
一个简单的读写注册表实例
点对点视频会议程序:VideoNet
乱砍设计模式之二:STATE 模式——履胡之肠
ATL 实现定制的 IE 浏览器栏、工具栏和桌面
对“仅通过崩溃地址找出源代码的出错行”一
COM插件模型浅谈
Windows 2000驱动程序的设计
MFC 编写的仿 Windows 计算器
用VC实现支持多语言的程序
连接 COM 与.NET 的桥梁(二)——COM 服务
浅谈PDFlib中文输出(一)如何使用Acrobat标

相关评论


本文章所属分类:首页 VC++

  热门关键字: