0

wxStaticText を wxWindow の中央に配置したいのですが、うまくいかないようです。これが私のコードです:

#include <iostream> 
#include <wx/wx.h>
#include <wx/gbsizer.h>

using namespace std;

class MyApp: public wxApp
{
    virtual bool OnInit();
};

bool MyApp::OnInit()
{
 wxFrame *frame = new wxFrame(NULL,wxID_ANY,wxT("fenetre"));
 wxWindow *win = new wxWindow(frame,wxID_ANY);
 win->SetWindowStyle(wxBORDER_RAISED);
 wxStaticText *text = new wxStaticText(win,wxID_STATIC,wxT("Mon texte"));
 wxBoxSizer *b = new wxBoxSizer(wxVERTICAL);
 wxGridBagSizer *box = new wxGridBagSizer();
 wxButton *button = new wxButton(frame,wxID_ANY,wxT("salut"));
 b->Add(text,0,wxALIGN_CENTRE);
 win->SetSizer(b);
 box->Add(win,wxGBPosition(0,0),wxDefaultSpan,wxALL|wxALIGN_CENTER|wxGROW);
 box->Add(button,wxGBPosition(1,0),wxDefaultSpan,wxALL|wxGROW);
 box->AddGrowableCol(0);
 box->AddGrowableRow(0);
 box->AddGrowableRow(1);
 frame->SetSizer(box);
 frame->Show(true);
 return true; 
}

DECLARE_APP(MyApp)
IMPLEMENT_APP(MyApp)

何が悪いのかわかりませんが、wxStaticText が wxWindow の中央に配置されません。何が欠けているか教えてください。

フレームに直接 wxStaticText を使用した私のコード。

#include <wx/gbsizer.h>

using namespace std;

class MyApp: public wxApp
 {
     virtual bool OnInit();
 };

 bool MyApp::OnInit()
 {
   wxFrame *frame = new wxFrame(NULL,wxID_ANY,wxT("fenetre"));
   //wxFrame *win = new wxFrame(frame,wxID_ANY,wxT("hh"));
   wxStaticText *text = new       wxStaticText(frame,wxID_STATIC,wxT("Mon texte"),wxDefaultPosition,wxDefaultSize,wxALIGN_CENTER_HORIZONTAL);
  text->SetWindowStyle(wxBORDER_RAISED);
  //wxBoxSizer *b = new wxBoxSizer(wxVERTICAL);
  wxGridBagSizer *box = new wxGridBagSizer();
  wxButton *button = new wxButton(frame,wxID_ANY,wxT("salut"));
  //b->Add(text,0,wxALIGN_CENTRE);
  //win->SetSizer(b);
  box->Add(text,wxGBPosition(0,0),wxDefaultSpan,wxALL|wxALIGN_CENTER);
  box->Add(button,wxGBPosition(1,0),wxDefaultSpan,wxALL|wxGROW);
  box->AddGrowableCol(0);
  box->AddGrowableRow(0);
  box->AddGrowableRow(1);
  frame->SetSizer(box);
  frame->Show(true);
  return true;
 }

 DECLARE_APP(MyApp)
 IMPLEMENT_APP(MyApp)
4

1 に答える 1

0

コントロールをフレームに直接配置しないでください。つまり、フレームの子として配置しないでください。

これをしないでください:

wxStaticText *text = new       wxStaticText(frame,wxID_STATIC,wxT("Mon texte"),

wxPanel をフレームの単一の子として作成し、コントロールをパネルの子として配置することをお勧めします。

どうか、どうか、どうか、サンプル アプリケーションを見て、その中で行われている方法に従ってください。

サンプル アプリケーション コードを出発点として使用すると、自分自身と他のすべての人の時間を大幅に節約できます。

于 2012-08-29T14:59:44.790 に答える