2010-01-22 64 views
0

我用wxwidgets製作一個簡單的窗口。我怎樣才能改變邊界? 另外我怎樣才能用右箭頭按鈕按下滅?函數(OnClose)?如何更改邊框?

#include <wx/wx.h> 

class _Frame: public wxFrame 
{ 
    public: 
     _Frame(wxFrame *frame, const wxString& title); 
    private: 
    void OnClose(wxCloseEvent& event); 
     DECLARE_EVENT_TABLE() 
}; 

BEGIN_EVENT_TABLE(_Frame, wxFrame) 
END_EVENT_TABLE() 

_Frame::_Frame(wxFrame *frame, const wxString& title) 
    : wxFrame(frame, -1, title) 
{} 

void _Frame::OnClose(wxCloseEvent &event) 
{ 
    Destroy(); 
} 

class _App : public wxApp 
{ 
    public: 
     virtual bool OnInit(); 
}; 

IMPLEMENT_APP(_App); 

bool _App::OnInit() 
{ 
    _Frame* frame = new _Frame(0L, _("wxWidgets Application Template")); 
    frame->Show(); 

    return true; 
} 
+0

請勿使用下劃線開始名稱。這些名稱是爲編譯器保留的。例如。用於標準頭文件中的宏。 – MSalters 2010-01-22 12:58:46

+0

你想以什麼方式改變邊界? – RickNotFred 2010-01-22 13:10:43

回答

1

要關閉窗口向右箭頭,你所需要的疏水閥EVT_CHAR或EVT_KEY_DOWN像這樣:

頭文件:

void OnChar(wxKeyEvent& event); 

源文件:

void _Frame::OnChar(wxKeyEvent& event) 
{ 
    if (event.GetKeyCode() == WXK_RIGHT) 
    { 
    wxCommandEvent close(wxEVT_CLOSE_WINDOW); 
    AddPendingEvent(close); 
    } 
    event.Skip(); 
} 

BEGIN_EVENT_TABLE(_Frame, wxFrame) 
    EVT_CHAR(_Frame::OnChar) 
END_EVENT_TABLE() 
1

更改邊框(通過設置不同的wxBORDER_XXX樣式)不適用於所有窗口/底部l平臺,所以如果你真的需要這樣做,你最好重新創建窗口。