注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[wx] 系统托盘(Tray) ---- wxTaskBarIcon  

2010-08-07 11:41:25|  分类: gui_wxWidgets |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
系统托盘,哈。

lib: wxmsw28u_adv.lib

---------------------------- MyTray.h -----------------------------
#include <wx/wx.h>
#include <wx/taskbar.h>

class MyTray : public wxTaskBarIcon
{
public:
    void OnAbout(wxCommandEvent& event);

protected:
    virtual wxMenu *CreatePopupMenu();

private:
    DECLARE_EVENT_TABLE();
};
-----------------------------------------------------------------------
#include "MyTray.h"

BEGIN_EVENT_TABLE(MyTray, wxTaskBarIcon)
    EVT_MENU(wxID_ABOUT, MyTray::OnAbout)
END_EVENT_TABLE()

wxMenu *MyTray::CreatePopupMenu()
{
    // 每次都要 new 一个新的 wxMenu
    wxMenu *popupMenu = new wxMenu;
    popupMenu->Append(wxID_ABOUT, _("About"));
    popupMenu->AppendSeparator();
    popupMenu->Append(wxID_EXIT, _("Exit"));
    return popupMenu;
}

void MyTray::OnAbout(wxCommandEvent& event)
{
    wxMessageBox(_T("hello!"), wxT("About Tray!"), wxOK | wxICON_INFORMATION);
}
------------------------ MyFrame.cpp --------------------------
MyFrame::MyFrame(const wxString &title) : wxFrame(NULL, wxID_ANY, title)
{
    ....
    m_Tray = new MyTray();
    m_Tray->SetIcon(wxIcon(cut_xpm), _("Hello Tray!"));
}

MyFrame::~MyFrame()
{
    if ( m_Tray )
        delete m_Tray;
}
-----------------------------------------------------------------------

使用 wxTaskBarIcon 的退出流程
  1. 在 wxTaskBarIcon 上点'退出',调用 m_pMainFrame->Close()
  2. MainFrame 收到消息,最后调用自己的 wxFrame::Destroy()
  3. 进入析构函数,delete m_pTray,通过 wxTaskBarIcon::~wxTaskBarIcon() 完成退出流程

因为在 win32 下,wxTaskBarIcon 后面隐含着一个 TopLevelWindow,而此 TopLevelWindow 不退出,app 也是不会退出的。
  评论这张
 
阅读(1292)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017