Подавление предупреждений в производстве для приложения wxWidgets - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю доказательство концепции, прежде чем принимать или нет 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 высоту или ширину, а затем снова разверните, сообщения появятся в консоли.

...