class MyFontDialog:public wxFrame
{
public:
MyFontDialog(const wxString& title);
protected:
void OnOpen(wxCommandEvent& event);
wxTextCtrl* tc;
};
MyFontDialog::MyFontDialog(const wxString& title)
:wxFrame(NULL,-1,title)
{
wxMenuBar* mbMain = new wxMenuBar;
wxMenu* file = new wxMenu;
wxMenuItem* miFontDialog = new wxMenuItem(file,-1,wxT("字体对话框"));
file->Append(miFontDialog);
mbMain->Append(file,wxT("文件"));
SetMenuBar(mbMain);
Bind(wxEVT_COMMAND_MENU_SELECTED,MyFontDialog::OnOpen,this,miFontDialog->GetId());
tc = new wxTextCtrl(this,-1,wxT("测试文字"),wxPoint(-1,-1),wxSize(-1,-1)
,wxEXPAND|wxTE_MULTILINE);
Centre();
}
void MyFontDialog::OnOpen(wxCommandEvent& event)
{
wxFontDialog* fontDialog = new wxFontDialog(this);
if(fontDialog->ShowModal() == wxID_OK)
{
tc->SetFont(fontDialog->GetFontData().GetChosenFont());
}
}
//-----注意此处分割------------------------------------------------------------------------------------------------------
//wxFontDialog也以在打开前,对样式进行初始化。
//参照以下的函数
void MyFontDialog::OnOpen(wxCommandEvent& event)
{
wxFont font = tc->GetFont();
wxColour fontColour = tc->GetForegroundColour();
wxFontData fontData;
fontData.SetInitialFont(font);
fontData.SetColour(fontColour);
wxFontDialog* dialog = new wxFontDialog(this,fontData);
if(dialog->ShowModal() == wxID_OK)
{
fontData = dialog->GetFontData();
font = fontData.GetChosenFont();
tc->SetFont(font);
tc->SetForegroundColour(fontData.GetColour());
}
}