2012-07-12 94 views
0
Wizard::Wizard(wxWindow* parent, const wxString& archive) 
: wxWizard(parent, wxID_ANY, _("Wizard")) 
{  
    this->SetSizeHints(wxSize(-1,-1), wxDefaultSize); 

    wxWizardPageSimple* rcModWizPageSelect = new wxWizardPageSimple(this); 
    m_pages.Add(rcModWizPageSelect); 

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

    m_bitmap2 = new wxStaticBitmap(rcModWizPageSelect, wxID_ANY, wxBitmap(wxT("data/img.jpg"), wxBITMAP_TYPE_ANY), wxDefaultPosition, wxDefaultSize, 0); 
    m_bitmap2->SetMinSize(wxSize(586,192)); 

    bSizer1->Add(m_bitmap2, 0, wxALL|wxEXPAND|wxFIXED_MINSIZE, 5); 

    wxStaticBoxSizer* sbSizer1; 
    sbSizer1 = new wxStaticBoxSizer(new wxStaticBox(rcModWizPageSelect, wxID_ANY, _("Select Archive")), wxVERTICAL); 

    rcModArchivePicker = new wxFilePickerCtrl(rcModWizPageSelect, wxID_ANY, wxEmptyString, _("Select a file"), wxT("*.zip"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN); 
    sbSizer1->Add(rcModArchivePicker, 0, wxALL|wxEXPAND, 5); 

    bSizer1->Add(sbSizer1, 1, wxALL|wxEXPAND, 5); 

    rcModWizPageSelect->SetSizer(bSizer1); 
    rcModWizPageSelect->Layout(); 
    bSizer1->Fit(rcModWizPageSelect); 
    wxWizardPageSimple* rcModWizPageProgress = new wxWizardPageSimple(this); 
    m_pages.Add(rcModWizPageProgress); 

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

    m_bitmap1 = new wxStaticBitmap(rcModWizPageProgress, wxID_ANY, wxBitmap(wxT("data/img.jpg"), wxBITMAP_TYPE_ANY), wxDefaultPosition, wxDefaultSize, 0); 
    m_bitmap1->SetMinSize(wxSize(586,192)); 

    bSizer2->Add(m_bitmap1, 0, wxALL|wxEXPAND|wxFIXED_MINSIZE, 5); 

    wxStaticBoxSizer* sbSizer2; 
    sbSizer2 = new wxStaticBoxSizer(new wxStaticBox(rcModWizPageProgress, wxID_ANY, _("Please Wait")), wxVERTICAL); 

    rcModInstallProgress = new wxGauge(rcModWizPageProgress, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL|wxGA_SMOOTH); 
    rcModInstallProgress->SetValue(0); 
    sbSizer2->Add(rcModInstallProgress, 0, wxALL|wxEXPAND, 5); 

    bSizer2->Add(sbSizer2, 1, wxALL|wxEXPAND, 5); 

    rcModWizPageProgress->SetSizer(bSizer2); 
    rcModWizPageProgress->Layout(); 
    bSizer2->Fit(rcModWizPageProgress); 

    this->Centre(wxBOTH); 

    for (unsigned int i = 1; i < m_pages.GetCount(); i++) 
    { 
     m_pages.Item(i)->SetPrev(m_pages.Item(i - 1)); 
     m_pages.Item(i - 1)->SetNext(m_pages.Item(i)); 
    } 
} 

我尝试拥有一个不错的向导对话框,但最小大小被忽略,整体框架比我的图像小得多。该图像的大小为586x192。wxSizer和wxStaticBitmap忽略最小大小

在wxFormBuilder中预览看起来不错,但生成的代码看起来完全不同。 这里2图像: http://i.stack.imgur.com/tbOzP.png http://i.stack.imgur.com/B3vVf.png

谁能帮助我?

回答

1

我遇到了同样的问题,并能够通过调用sizer上的SetItemMinSize()来解决它,如下所示:

sizer->Add(control, 0, 0, 0); 
sizer->SetItemMinSize(control, 150, -1); 
0

您不妨检查一下您的实际父部件是否遵循其子部件的大小或识别它们。我认为你的部件本身(图片)具有正确的大小,但其周围的窗口/框架没有正确的大小,因此它显示为“超出范围”。 尽量让窗口应用规模的变化它的孩子,看看这里的参考: http://docs.wxwidgets.org/trunk/overview_windowsizing.html

和:

http://docs.wxwidgets.org/trunk/classwx_window.html#a2bf38a6cbd1f82fb46f274396f482994http://docs.wxwidgets.org/trunk/classwx_sizer.html#abad9cedc0cbe9ade2c799da23462d17e

希望帮助映入眼帘,

Roin

+0

嗯以及我的想法是多叫飞度()实际帧或实际窗口或可能在窗口和你rcModWizPageSelect两个,但如果不工作,要么这似乎是一个很奇怪的问题。即使你的窗口可能正在计算它的大小取决于实际的屏幕分辨率,而不是查看内部的窗口小部件并应用它自己的最小尺寸(是否为窗口设置了最小尺寸?) – Roin 2012-07-12 15:26:52