wxWidgets:wxEVTの処理_PAINT

2187 ワード

私たちは依然としてwxFrameに継承されたMyFrameを例に挙げています.
MyFrame.h:
class MyFrame : public wxFrame

{

    ......

private:

    ......

    void OnPaint(wxPaintEvent &event);

};

MyFrame.cpp
MyFrame :: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)

              : wxFrame(NULL, wxID_ANY, title, pos, size)

{

    //  

    SetBackgroundColour(*wxWHITE);

    // Bind paint event

    Bind(wxEVT_PAINT, &MyFrame::OnPaint, this);

}



// paint event handler

void MyFrame :: OnPaint(wxPaintEvent &event)

{

    wxPaintDC dc(this);

    dc.SetTextBackground(*wxRED);

    dc.SetTextForeground(*wxYELLOW);

    dc.SetBackgroundMode(wxSOLID);

    dc.DrawText(L"Exercise 1", 0, 0);

}

上のコードでは、描画前に文字背景モードをwxSOLIDに設定します.そうしないと、文字背景色が正しく表示されません.
また、MyFrameのコンストラクション関数では、ウィンドウの背景を白に設定します.Paintの前に、Windowsは無効な領域をこの色で塗りつぶします.