GitHub Gitee

单一控件封装为对话框的类

 

 

wxDlgPack
/*! \file wxDlgPack.h

*/

#ifndef __wxdlgPack_GUI__
#define __wxdlgPack_GUI__

#include
<wx/panel.h>
#include
<wx/string.h>
#include
<wx/gdicmn.h>
#include
<wx/font.h>
#include
<wx/colour.h>
#include
<wx/settings.h>
#include
<wx/button.h>
#include
<wx/sizer.h>
#include
<wx/dialog.h>

///////////////////////////////////////////////////////////////////////////


/*! \class wxDlgPack

本类用于将单一控件封装进一个模式对话框。 这样在需要到一些简单界面,如颜色的选取,
文字的输入等,就不用从头写一个类,直接使用即可。
本类通过重载 -> 操作符,实现了对控件的直接访问。

*/
template
< class T >
class wxDlgPack : public wxDialog
{
private:

protected:
wxPanel
* m_panelCon;

wxButton
* m_buttonOK;
wxButton
* m_buttonCancel;
T
*m_pControl;

public:

wxDlgPack( wxWindow
* hostWin, long controlStyle, const wxString& controlLabel = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 505,354 ) )
:wxDialog( NULL, wxID_ANY, wxEmptyString, pos, size, wxSTAY_ON_TOP )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );

wxBoxSizer
* bSizer5;
bSizer5
= new wxBoxSizer( wxVERTICAL );

m_panelCon
= new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer
* m_sizer;
m_sizer
= new wxBoxSizer( wxVERTICAL );

m_pControl
= new T( m_panelCon, wxID_ANY, controlLabel, wxDefaultPosition, wxDefaultSize, controlStyle );
m_sizer
->Add( m_pControl, 1, wxALL|wxEXPAND, 5 );

m_panelCon
->SetSizer( m_sizer );
m_panelCon
->Layout();
m_sizer
->Fit( m_panelCon );
bSizer5
->Add( m_panelCon, 1, wxEXPAND | wxALL, 5 );

wxBoxSizer
* bSizer6;
bSizer6
= new wxBoxSizer( wxHORIZONTAL );


bSizer6
->Add( 0, 0, 1, wxEXPAND, 5 );

m_buttonOK
= new wxButton( this, wxID_OK, wxT("确定"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer6
->Add( m_buttonOK, 0, wxALL, 5 );

m_buttonCancel
= new wxButton( this, wxID_CANCEL, wxT("取消"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer6
->Add( m_buttonCancel, 0, wxALL, 5 );

bSizer5
->Add( bSizer6, 0, wxEXPAND, 5 );

this->SetSizer( bSizer5 );
this->Layout();


wxPoint ps1
= hostWin->ClientToScreen( wxPoint(0,0) );
wxSize sizeHost
= hostWin->GetSize();
Move(ps1.x, ps1.y
+ sizeHost.GetHeight() );
};


/*! 重载指针操作符

*/
T
* operator->(){
return m_pControl;
};



};

#endif //__wxdlgPack_GUI__

 

posted @ 2010-10-28 23:05  shudingbo  阅读(359)  评论(0编辑  收藏  举报
GitHub Gitee