WEB开发网
开发学院软件开发VC 系统托盘编程完全指南 阅读

系统托盘编程完全指南

 2010-07-25 20:46:55 来源:WEB开发网   
核心提示:为了正确使用CTrayIcon,首先你必须在程序的某个地方实例化CTrayIcon,系统托盘编程完全指南(3),例子程序是在主框架中创建CTrayIcon实例的,Class MainFramepublic CFrameWnd {protected:CTrayIcon m_trayIcon;// my tray icon

为了正确使用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); //删除图标

上一页  1 2 3 4 5  下一页

Tags:系统 托盘 编程

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