2010-01-22 11 views
0

wxwidgets를 사용하여 간단한 창을 만듭니다. 국경을 어떻게 바꿀 수 있습니까? 오른쪽 화살표 버튼을 누른 상태에서 파괴 기능 (OnClose)을 호출하려면 어떻게해야합니까?테두리를 어떻게 바꿀 수 있습니까?

헤더 파일 :

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() 
+0

밑줄이있는 이름은 시작하지 마십시오. 이러한 이름은 컴파일러 용으로 예약되어 있습니다. 예 : 매크로에서 표준 헤더로 사용하기. – MSalters

+0

어떤 식으로 테두리를 변경 하시겠습니까? – RickNotFred

답변

1

가 창을 닫으려면 당신과 같이 트랩 EVT_CHAR 또는 EVT_KEY_DOWN에 필요한 권리를-화살표 테두리 (다른 wxBORDER_XXX 스타일 설정)가 모든 윈도우/아래에서 작동하지 않습니다. l 플랫폼을 초기 창 만들기 이후에 만들었으므로 정말 필요하다면 창을 더 잘 재현 할 수 있습니다.

1

변경

#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; 
} 
관련 문제