我该如何更改边框?

时间:2010-01-22 11:55:49

标签: c++ wxwidgets

我用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;
}

2 个答案:

答案 0 :(得分: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 :(得分:1)

在创建初始窗口后,更改边框(通过设置不同的wxBORDER_XXX样式)对所有窗口/所有平台都不起作用,因此如果您确实需要,最好重新创建窗口此