Я использую Visual Studio 2022.
Вот код для мэйнфрейма.
#include "MainFrame.h"
#include <wx/wx.h>
MainFrame::MainFrame(const wxString& title) : wxFrame(nullptr, wxID_ANY, title) {
wxPanel* panel = new wxPanel(this);
wxButton* button = new wxButton(this, wxID_ANY, "Button", wxPoint(150, 50), wxSize(100, 35));
wxCheckBox* checkBox = new wxCheckBox(panel, wxID_ANY, "CheckBox", wxPoint(550, 55));
wxStaticText* staticText = new wxStaticText(panel, wxID_ANY, "Static Text - NOT editable", wxPoint(120, 150));
}
Код работает на 100% нормально, однако, когда мой графический интерфейс всплывает при запуске отладки, графический интерфейс отображает только кнопку, но не текст или флажок.
@Calax, тебе действительно стоит присмотреться к сайзерам. Посмотрите здесь: docs.wxwidgets.org/latest/classwx_sizer.html и здесь: docs.wxwidgets.org/latest/overview_sizer.html
Связанный: Если Windows, лучше и новее использовать WinUI3.





Вам нужно увеличить панель, чтобы элементы управления, которые вы на ней разместили, были видны. Сейчас вы используете mxDefaultSize, он довольно маленький, как видно в верхнем левом углу вашей фотографии.
Используемый вами конструктор:
wxPanel::wxPanel(
wxWindow* parent,
wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, // <- set this to something bigger
long style = wxTAB_TRAVERSAL,
const wxString& name = wxPanelNameStr
)
Пример:
wxPanel* panel = new wxPanel(
this,
wxID_ANY,
wxDefaultPosition,
{1000, 1000}
);
Легко исправить, для этого я переключил конструктор wxPanel:
wxPanel* panel = new wxPanel(
this,
wxID_ANY,
wxDefaultPosition,
{1000, 1000}
);
И изменил указатель на wxButton с «this» на «panel», и теперь все выглядит так, как задумано. Вот новый код:
#include "MainFrame.h"
#include <wx/wx.h>
MainFrame::MainFrame(const wxString& title) : wxFrame(nullptr, wxID_ANY, title) {
wxPanel* panel = new wxPanel(
this,
wxID_ANY,
wxDefaultPosition,
{ 2000, 2000 }
);
wxButton* button = new wxButton(panel, wxID_ANY, "Button", wxPoint(150, 50), wxSize(120, 50));
wxCheckBox* checkBox = new wxCheckBox(panel, wxID_ANY, "CheckBox", wxPoint(550, 55));
wxStaticText* staticText = new wxStaticText(panel, wxID_ANY, "Static Text - NOT editable", wxPoint(120, 150));
}
Спасибо всем за помощь, очень ценю. :)
Они находятся в этом маленьком белом квадрате в верхнем левом углу. Вам нужно придать им правильный размер.