<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 12.6 wxTaskBarIcon 這個類的功能是在系統托盤區(Windows,Gnome或者KDE)或者停靠區(Mac OS X)安裝一個圖標.點擊這個圖標將會彈出一個應用程序提供的菜單,并且在當鼠標劃過圖標的時候會顯示一個可選的工具提示.這種技術提供了一種不必通過正規的用戶界面快速訪問某些重要功能的方法.應用程序可以通過更換圖標來提供某些狀態信息,比如用來提示電池的剩余電量或者windows系統上的網絡連接提示. 下圖演示了wxWidgets自帶的samples/taskbar例子在windows平臺上運行時的樣子.它首先顯示一個 wxWidgets的圖標,當鼠標移過這個圖標的時候顯示"wxTaskBarIconSample."工具提示,右鍵單擊這個圖標將會顯示一個菜單,菜單有三個選項,選擇設置新圖標選項將會將圖標設置為一個笑臉,并且把工具提示更改為一個新的文本. ![](img/mht809C%281%29.tmp) 以wxTaskBarIcon方式驅動的應用程序并不十分復雜,如下所示.自定義的類型MyTaskBarIcon重載了wxTaskBarIcon的CreatePopupMenu函數,并且攔截了左鍵雙擊事件,并實現了三個菜單項. ``` class MyTaskBarIcon: public wxTaskBarIcon { public: MyTaskBarIcon() {}; void OnLeftButtonDClick(wxTaskBarIconEvent&); void OnMenuRestore(wxCommandEvent&); void OnMenuExit(wxCommandEvent&); void OnMenuSetNewIcon(wxCommandEvent&); virtual wxMenu *CreatePopupMenu(); DECLARE_EVENT_TABLE() }; enum { PU_RESTORE = 10001, PU_NEW_ICON, PU_EXIT, }; BEGIN_EVENT_TABLE(MyTaskBarIcon, wxTaskBarIcon) EVT_MENU(PU_RESTORE, MyTaskBarIcon::OnMenuRestore) EVT_MENU(PU_EXIT, MyTaskBarIcon::OnMenuExit) EVT_MENU(PU_NEW_ICON,MyTaskBarIcon::OnMenuSetNewIcon) EVT_TASKBAR_LEFT_DCLICK (MyTaskBarIcon::OnLeftButtonDClick) END_EVENT_TABLE() void MyTaskBarIcon::OnMenuRestore(wxCommandEvent& ) { dialog->Show(true); } void MyTaskBarIcon::OnMenuExit(wxCommandEvent& ) { dialog->Close(true); } void MyTaskBarIcon::OnMenuSetNewIcon(wxCommandEvent&) { wxIcon icon(smile_xpm); if (!SetIcon(icon, wxT("wxTaskBarIcon Sample - a different icon"))) wxMessageBox(wxT("Could not set new icon.")); } // 重載 wxMenu *MyTaskBarIcon::CreatePopupMenu() { wxMenu *menu = new wxMenu; menu->Append(PU_RESTORE, wxT("&Restore TBTest")); menu->Append(PU_NEW_ICON,wxT("&Set New Icon")); menu->Append(PU_EXIT, wxT("E&xit")); return menu; } void MyTaskBarIcon::OnLeftButtonDClick(wxTaskBarIconEvent&) { dialog->Show(true); } ``` 下面的代碼則用來顯示一個對話框并且安裝初始化圖標. ``` #include "wx/wx.h" #include "wx/taskbar.h" // 定義一個新的應用程序 class MyApp: public wxApp { public: bool OnInit(void); }; class MyDialog: public wxDialog { public: MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_DIALOG_STYLE); ~MyDialog(); void OnOK(wxCommandEvent& event); void OnExit(wxCommandEvent& event); void OnCloseWindow(wxCloseEvent& event); void Init(void); protected: MyTaskBarIcon *m_taskBarIcon; DECLARE_EVENT_TABLE() }; #include "../sample.xpm" #include "smile.xpm" MyDialog *dialog = NULL; IMPLEMENT_APP(MyApp) bool MyApp::OnInit(void) { // 創建主窗口 dialog = new MyDialog(NULL, wxID_ANY, wxT("wxTaskBarIcon Test Dialog"), wxDefaultPosition, wxSize(365, 290)); dialog->Show(true); return true; } BEGIN_EVENT_TABLE(MyDialog, wxDialog) EVT_BUTTON(wxID_OK, MyDialog::OnOK) EVT_BUTTON(wxID_EXIT, MyDialog::OnExit) EVT_CLOSE(MyDialog::OnCloseWindow) END_EVENT_TABLE() MyDialog::MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long windowStyle): wxDialog(parent, id, title, pos, size, windowStyle) { Init(); } MyDialog::~MyDialog() { delete m_taskBarIcon; } void MyDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { Show(false); } void MyDialog::OnExit(wxCommandEvent& WXUNUSED(event)) { Close(true); } void MyDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { Destroy(); } void MyDialog::Init(void) { (void)new wxStaticText(this, wxID_ANY, wxT("Press 'Hide me' to hide me, Exit to quit."), wxPoint(10, 20)); (void)new wxStaticText(this, wxID_ANY, wxT("Double-click on the taskbar icon to show me again."), wxPoint(10, 40)); (void)new wxButton(this, wxID_EXIT, wxT("Exit"), wxPoint(185, 230), wxSize(80, 25)); (new wxButton(this, wxID_OK, wxT("Hide me"), wxPoint(100, 230), wxSize(80, 25)))->SetDefault(); Centre(wxBOTH); m_taskBarIcon = new MyTaskBarIcon(); if (!m_taskBarIcon->SetIcon(wxIcon(sample_xpm), wxT("wxTaskBarIcon Sample"))) wxMessageBox(wxT("Could not set icon.")); } ``` wxTaskBarIcon的事件 下表列出的事件宏用來攔截wxTaskBarIcon相關的事件.注意不是所有的發行版都產生這些事件,因此如果你想再鼠標點擊的時候彈出菜單,你應該使用重載CreatePopupMenu函數的方法.還要注意wxTaskBarIconEvent事件不會提供任何鼠標指針狀態信息,比如鼠標位置之類. | EVT_TASKBAR_MOVE(func) | 鼠標正在圖標上移動. | |:--- |:--- | | EVT_TASKBAR_LEFT_DOWN(func) | 左鍵按下. | | EVT_TASKBAR_LEFT_UP(func) | 左鍵釋放. | | EVT_TASKBAR_RIGHT_DOWN(func) | 右鍵按下. | | EVT_TASKBAR_RIGHT_UP(func) | 右鍵釋放. | | EVT_TASKBAR_LEFT_DCLICK(func) | 左鍵雙擊. | | EVT_TASKBAR_RIGHT_DCLICK(func) | 右鍵雙擊. | wxTaskBarIcon成員函數 wxTaskBarIcon的成員函數是非常簡單的,下面列出的就是它所有的成員函數. CreatePopupMenu是一個虛函數,應用程序已經重載這個函數以返回一個wxMenu指針.這個函數在對應的 wxEVT_TASKBAR_RIGHT_DOWN事件中被調用(在Mac OS X系統上模擬了這個事件). wxWidgets也會在菜單被關閉的時候自動釋放這個菜單所占用的內存. IsIconInstalled返回是否SetIcon已經被成功調用. IsOk在wxTaskBarIcon對象已經被成功初始化的時候返回True. PopupMenu在當前位置顯示一個菜單.最好不要調用這個函數,而應該重載CreatePopupMenu函數,然后讓wxWidgets幫你顯示對應的菜單. RemoveIcon移除前一次使用SetIcon函數設置的圖標. SetIcon設置一個圖標(wxIcon)以及一個可選的工具提示.這個函數可以被多次調用.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看