Я создаю доказательство концепции, прежде чем принимать или нет wxWidgets для разработки проекта.
В обучающей программе я заметил несколько предупреждений, отображаемых при изменении размера окна. Примеры:
(my_program:12795): Gtk-CRITICAL **: 14:08:21.430: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar
(my_program:12795): Gtk-WARNING **: 14:08:37.179: Negative content height -6 (allocation 6, extents 6x6) while allocating gadget (node entry, owner GtkEntry)
Справедливо, я понимаю, что это могут быть вещи, которые я могу проверять и предотвращать в коде, но, тем не менее, это было довольно безопасно для тестовой программы, которую я тестировал. Но это заставило меня думать, что я не хочу или не хочу, чтобы мои конечные пользователи видели такого рода сообщения.
Так как я могу скрыть эти предупреждения от конечного пользователя?
Если кто-то хочет увидеть код:
main.hpp:
#include "wx/wx.h"
class FlexGridSizer : public wxFrame {
public:
FlexGridSizer(const wxString& title);
};
class MyApp : public wxApp{
public:
virtual bool OnInit();
};
main. cpp:
#include "main.hpp"
FlexGridSizer::FlexGridSizer(const wxString& title)
: wxFrame(NULL, -1, title, wxPoint(-1, -1), wxSize(270, 220)) {
wxPanel* panel = new wxPanel(this, -1);
wxBoxSizer* hbox = new wxBoxSizer(wxHORIZONTAL);
wxFlexGridSizer *fgs = new wxFlexGridSizer(3, 2, 9, 25);
wxStaticText* text1 = new wxStaticText(panel, -1, wxT("A"));
wxStaticText* text2 = new wxStaticText(panel, -1, wxT("B"));
wxStaticText* text3 = new wxStaticText(panel, -1, wxT("C"));
wxTextCtrl* tc1 = new wxTextCtrl(panel, -1);
wxTextCtrl* tc2 = new wxTextCtrl(panel, -1);
wxTextCtrl* tc3 = new wxTextCtrl(panel, -1, wxT(""), wxPoint(-1, -1),
wxSize(-1, -1), wxTE_MULTILINE);
fgs->Add(text1);
fgs->Add(tc1, 1, wxEXPAND);
fgs->Add(text2);
fgs->Add(tc2, 1, wxEXPAND);
fgs->Add(text3, 1, wxEXPAND);
fgs->Add(tc3, 1, wxEXPAND);
fgs->AddGrowableRow(2, 1);
fgs->AddGrowableRow(1, 1);
hbox->Add(fgs, 1, wxALL | wxEXPAND, 15);
panel->SetSizer(hbox);
Centre();
}
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit() {
FlexGridSizer* fgs = new FlexGridSizer(wxT("FlexGridSizer"));
fgs->Show(true);
return true;
}
Скомпилируйте и запустите в консоли, затем начните изменять размер окна, чтобы b = имел 0 высоту или ширину, а затем снова разверните, сообщения появятся в консоли.