Problem ze wxSplitterWindow.

Problem ze wxSplitterWindow.
P1
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 miesiące
  • Postów:179
0

Witam.

Problem mam taki że wxSplitterWindow nie dosięga wxMenuBara ( tak jak na zdjęciu ). Reasumując SplitterWindow powinien sięgąć od góry do dołu.
Oczywiśćie SplitterWindow jest widoczny tylko gdy wezmę tryb pełno ekranowy , bo na normalny nic nie widać.

Plik źródło.cpp

Kopiuj
#include"Nagłówek.h"
#include"utils.h"
IMPLEMENT_APP(Aplikacja);
bool Aplikacja::OnInit()
{
	wxInitAllImageHandlers();
	Ramka *wsk = new Ramka(NULL, wxID_ANY, tytul, wxDefaultPosition, wxSize(800,600), wxDEFAULT_FRAME_STYLE);
	wsk->Show(true);
	return true;
}
Ramka::Ramka(wxWindow *parent, wxWindowID id, const wxString &nazwa, const wxPoint &po, const wxSize &si, long style):wxFrame(parent,id,nazwa,po,si,style)
{

	// Pasek Menu [Początek] 
	mb = new wxMenuBar();
	mFile = new wxMenu();
	mAddFile = new wxMenu();
	mEdit = new wxMenu();
	mView = new wxMenu();
	mTools = new wxMenu();
	mHelp = new wxMenu();

	// Plik->Dodaj Plik
	wxMenuItem *new_file = new wxMenuItem(mAddFile, wxID_ANY, wxT("Nowy Plik\tCtrl-N"), wxEmptyString);
	new_file->SetBitmap(wxBitmap(wxGetPath("gfx/16/new_file.png"), wxBITMAP_TYPE_PNG));
	mAddFile->Append(new_file);
	mAddFile->Append(wxID_ANY, wxT("Istniejący plik"), wxEmptyString);

	wxMenuItem *new_project = new wxMenuItem(mFile, wxID_ANY, wxT("Nowy Projekt\tCtrl-Shift-N"));
	new_project->SetBitmap(wxBitmap(wxGetPath("gfx/16/new_project.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(new_project);

	wxMenuItem *open_project = new wxMenuItem(mFile, wxID_ANY, wxT("Otwórz Projekt\tCtrl-Shift-O"));
	open_project->SetBitmap(wxBitmap(wxGetPath("gfx/16/open_project.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(open_project);
	mFile->AppendSeparator();

	wxMenuItem *open_file = new wxMenuItem(mFile, wxID_ANY, wxT("Otwórz Plik\tCtrl-O"));
	open_file->SetBitmap(wxBitmap(wxGetPath("gfx/16/open_file.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(open_file);
	mFile->AppendSubMenu(mAddFile, wxT("Dodaj Plik"));

	wxMenuItem *save_file = new wxMenuItem(mFile, wxID_ANY, wxT("Zapisz Plik\tCtrl-S"));
	save_file->SetBitmap(wxBitmap(wxGetPath("gfx/16/save_file.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(save_file);

	wxMenuItem *save_file_as = new wxMenuItem(mFile, wxID_ANY, wxT("Zapisz Plik jako...\tCtrl-Shift-S"));
	save_file_as->SetBitmap(wxBitmap(wxGetPath("gfx/16/save_as.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(save_file_as);

	wxMenuItem *save_file_all = new wxMenuItem(mFile, wxID_ANY, wxT("Zapisz Wszystko"));
	save_file_all->SetBitmap(wxBitmap(wxGetPath("gfx/16/save_all.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(save_file_all);
    
	mFile->Append(wxID_ANY, wxT("Zmień nazwę pliku"));
	mFile->Append(wxID_ANY, wxT("Usuń Plik"));
	mFile->Append(wxID_ANY, wxT("Zamknij Plik"));
	mFile->AppendSeparator();

	wxMenuItem *print = new wxMenuItem(mFile, wxID_ANY, wxT("Drukuj\tCtrl-P"));
	print->SetBitmap(wxBitmap(wxGetPath("gfx/16/print.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(print);

	wxMenuItem *show_print = new wxMenuItem(mFile, wxID_ANY, wxT("Podgląd Wydruku\tCtrl-Shift-P"));
	show_print->SetBitmap(wxBitmap(wxGetPath("gfx/16/preview.png"), wxBITMAP_TYPE_PNG));
	mFile->Append(show_print);
	mFile->Append(wxID_ANY, wxT("Ustawienia Strony"));
	mFile->AppendSeparator();

	mFile->Append(wxID_ANY, wxT("Zamknij program"));

	wxMenuItem *copy = new wxMenuItem(mEdit, wxID_ANY, wxT("Kopiuj\tCtrl-C"));
	copy->SetBitmap(wxBitmap(wxGetPath("gfx/16/copy.png"), wxBITMAP_TYPE_PNG));
	mEdit->Append(copy);

	wxMenuItem *cut = new wxMenuItem(mEdit, wxID_ANY, wxT("Wytnij\tCtrl-X"));
	cut->SetBitmap(wxBitmap(wxGetPath("gfx/16/cut.png"), wxBITMAP_TYPE_PNG));
	mEdit->Append(cut);

	wxMenuItem *paste = new wxMenuItem(mEdit, wxID_ANY, wxT("Wklej\tCtrl-V"));
	paste->SetBitmap(wxBitmap(wxGetPath("gfx/16/paste.png"), wxBITMAP_TYPE_PNG));
	mEdit->Append(paste);
	mEdit->AppendSeparator();

	mEdit->Append(wxID_ANY, wxT("Zaznacz Wszystko\tCtrl-A"));
	mEdit->Append(wxID_ANY, wxT("Odwróć zaznaczanie\tCtrl-R"));
	mEdit->AppendSeparator();

	wxMenuItem *undo = new wxMenuItem(mEdit, wxID_ANY, wxT("Cofnij\tCtrl-Z"));
	undo->SetBitmap(wxBitmap(wxGetPath("gfx/16/undo.png"), wxBITMAP_TYPE_PNG));
	mEdit->Append(undo);

	wxMenuItem *repet = new wxMenuItem(mEdit, wxID_ANY, wxT("Powtórz\tCtrl-Y"));
	repet->SetBitmap(wxBitmap(wxGetPath("gfx/16/redo.png"), wxBITMAP_TYPE_PNG));
	mEdit->Append(repet);
	mEdit->AppendSeparator();

	wxMenuItem *find = new wxMenuItem(mEdit, wxID_ANY, wxT("Znajdź\tCtrl-F"));
	find->SetBitmap(wxBitmap(wxGetPath("gfx/16/find.png"), wxBITMAP_TYPE_PNG));
	mEdit->Append(find);
	mEdit->Append(wxID_ANY, wxT("Znajdź i zamień\tCtrl-H"));

	mView->Append(wxID_ANY, wxT("Pełny Ekran\tF11"));
	mView->AppendCheckItem(wxID_ANY, wxT("Zawijaj wiersze\tCtrl-W"));
	mTools->Append(wxID_ANY, wxT("Nowa Klasa C++"));

	wxMenuItem *help = new wxMenuItem(mHelp, wxID_ANY, wxT("O programie\tF1"));
	help->SetBitmap(wxBitmap(wxGetPath("gfx/16/info.png"), wxBITMAP_TYPE_PNG));
	mHelp->Append(help);


	mb->Append(mFile, wxT("Plik"));
	mb->Append(mEdit, wxT("Edycja"));
	mb->Append(mView, wxT("Widok"));
	mb->Append(mTools, wxT("Narzędzia"));
	mb->Append(mHelp, wxT("Pomoc"));
	this->SetMenuBar(mb);

	// Pasek Menu [Koniec]]

	// Pasek Narzędzi [Początek]
	tb = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTB_FLAT | wxTB_HORIZONTAL);
	tb->SetToolBitmapSize(rozmiar_okna_paska_narzedzi);

	tb->AddTool(wxID_ANY, wxT("Nowy Projekt"), wxBitmap(wxGetPath("gfx/22/new_project.png"),wxBITMAP_TYPE_PNG), wxNullBitmap,wxITEM_NORMAL,wxEmptyString,wxEmptyString);
	tb->AddTool(wxID_ANY, wxT("Otwórz Projekt"), wxBitmap(wxGetPath("gfx/22/open_project.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddSeparator();
	tb->AddTool(wxID_ANY, wxT("Nowy Plik"), wxBitmap(wxGetPath("gfx/22/new_file.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddTool(wxID_ANY, wxT("Zapisz Plik"), wxBitmap(wxGetPath("gfx/22/save_file.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddTool(wxID_ANY, wxT("Zapisz wszystko"), wxBitmap(wxGetPath("gfx/22/save_all.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddSeparator();
	tb->AddTool(wxID_ANY, wxT("Drukuj"), wxBitmap(wxGetPath("gfx/22/print.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddSeparator();
	tb->AddTool(wxID_ANY, wxT("Kopiuj"), wxBitmap(wxGetPath("gfx/22/copy.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddTool(wxID_ANY, wxT("Wytnij"), wxBitmap(wxGetPath("gfx/22/cut.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddTool(wxID_ANY, wxT("Wklej"), wxBitmap(wxGetPath("gfx/22/paste.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddSeparator();
	tb->AddTool(wxID_ANY, wxT("Cofnij"), wxBitmap(wxGetPath("gfx/22/undo.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->AddTool(wxID_ANY, wxT("Powtórz"), wxBitmap(wxGetPath("gfx/22/redo.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
	tb->SetMargins(3, 3);
	tb->Realize();
	this->SetToolBar(tb);

	// Pasek Narzędzi [Koniec]

	wxStatusBar *sb = new wxStatusBar(this);
	sb->SetFieldsCount(2);
	this->SetStatusBar(sb);
	SetStatusText(tytul, 0);

	// Głowny sizer obszaru klienta
	wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
	this->SetSizer(mainSizer);

	// Główny panel
	panel = new wxPanel(this);
	wxBoxSizer *panelSizer = new wxBoxSizer(wxVERTICAL);
	panel->SetSizer(panelSizer);
	mainSizer->Add(panel, 1, wxEXPAND | wxALL, 0);

	// Kontener z dwiema kolumnami GUI
	splitter = new wxSplitterWindow(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DSASH | wxSP_NO_XP_THEME);
	panelSizer->Add(splitter, 1, wxEXPAND | wxALL, 0);

	left = new wxPanel(splitter, wxID_ANY);
	right = new wxPanel(splitter, wxID_ANY);

	left->SetMinSize(wxSize(200,-1));
	right->SetMinSize(wxSize(200,-1));

	splitter->SplitVertically(left, right, 250);


	CenterOnScreen();
}

Plik Nagłówek.h

Kopiuj
#ifndef Naglowek_h
#define Naglowek_h
#include<wx/wxprec.h>
#include<wx/wx.h>
#include<wx/splitter.h>
const wxString tytul = wxT("Edytor Sieciowy");
const wxSize rozmiar_okna_paska_narzedzi(22, 22);
class Aplikacja:public wxApp
{
public:
	virtual bool OnInit();
};
class Ramka :public wxFrame
{
public:
	Ramka(wxWindow *parent, wxWindowID id, const wxString &nazwa, const wxPoint &po, const wxSize &si, long style);
private:
	wxMenuBar *mb;
	wxMenu *mFile;
	wxMenu *mAddFile;
	wxMenu *mEdit;
	wxMenu *mView;
	wxMenu *mTools;
	wxMenu *mHelp;

	wxToolBar *tb;
	wxPanel *panel, *left, *right;
	wxSplitterWindow *splitter, *splitterRight;
};
#endif // !Naglowe_h

Jeśli będzie coś jeszcze potrzebne to proszę pisać to będę dorzucać. Bardzo mi zależy na rozwiązaniu tego problemu.

życzę miłego dnia oraz pozdrawiam serdecznie.

06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
0

Spróbuj może dać na końcu metody wywołanie SetSizerAndFit(mainSizer); (this->SetSizer(mainSizer); wywal).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.