Bipin5 Ответов: 2

Как устранить ошибку: "wxstatictext" не называет тип сообщения во время сборки и запуска проекта hello world с использованием wxwidgets


Я изучаю графическую программу C++ GUI и пытаюсь разрабатывать ее с помощью wxWidgets. Из одной из статей проекта code я создал проект Hello World GUI. Когда я строю и запускаю проект, я получаю ошибку:

\wxHelloWorldMain.h|49|ошибка: 'wxStaticText' не называет тип

Нужна помощь, чтобы решить то же самое.

Что я уже пробовал:

Я попытался понять смысл послания, но не смог. Я новичок в этой области.

Спасибо за быстрый ответ. Ниже я привожу подробную информацию о коде и сообщениях об ошибках:

Ниже приводится следующее wxHelloWorldMain.cpp:
/***************************************************************
 * Name:      wxHelloWorldMain.cpp
 * Purpose:   Code for Application Frame
 * Author:    Bipin Mehta ()
 * Created:   2019-08-25
 * Copyright: Bipin Mehta ()
 * License:
 **************************************************************/

#include "wxHelloWorldMain.h"
#include <wx msgdlg.h="">

//(*InternalHeaders(wxHelloWorldFrame)
#include <wx intl.h="">
#include <wx string.h="">
//*)

//helper functions
enum wxbuildinfoformat {
    short_f, long_f };

wxString wxbuildinfo(wxbuildinfoformat format)
{
    wxString wxbuild(wxVERSION_STRING);

    if (format == long_f )
    {
#if defined(__WXMSW__)
        wxbuild << _T("-Windows");
#elif defined(__UNIX__)
        wxbuild << _T("-Linux");
#endif

#if wxUSE_UNICODE
        wxbuild << _T("-Unicode build");
#else
        wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
    }

    return wxbuild;
}

//(*IdInit(wxHelloWorldFrame)
const long wxHelloWorldFrame::ID_STATICTEXT1 = wxNewId();
const long wxHelloWorldFrame::ID_BUTTON1 = wxNewId();
const long wxHelloWorldFrame::ID_PANEL1 = wxNewId();
const long wxHelloWorldFrame::ID_MENUITEM1 = wxNewId();
const long wxHelloWorldFrame::idMenuAbout = wxNewId();
const long wxHelloWorldFrame::ID_STATUSBAR1 = wxNewId();
//*)

BEGIN_EVENT_TABLE(wxHelloWorldFrame,wxFrame)
    //(*EventTable(wxHelloWorldFrame)
    //*)
END_EVENT_TABLE()

wxHelloWorldFrame::wxHelloWorldFrame(wxWindow* parent,wxWindowID id)
{
    //(*Initialize(wxHelloWorldFrame)
    wxBoxSizer* BoxSizer1;
    wxBoxSizer* BoxSizer2;
    wxMenu* Menu1;
    wxMenu* Menu2;
    wxMenuBar* MenuBar1;
    wxMenuItem* MenuItem1;
    wxMenuItem* MenuItem2;

    Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY"));
    BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
    Panel1 = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1"));
    BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
    StaticText1 = new wxStaticText(Panel1, ID_STATICTEXT1, _("Hello World"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
    BoxSizer2->Add(StaticText1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    Button1 = new wxStaticText(Panel1, ID_BUTTON1, _("Quit"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
    BoxSizer2->Add(Button1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    Panel1->SetSizer(BoxSizer2);
    BoxSizer2->Fit(Panel1);
    BoxSizer2->SetSizeHints(Panel1);
    BoxSizer1->Add(Panel1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    SetSizer(BoxSizer1);
    MenuBar1 = new wxMenuBar();
    Menu1 = new wxMenu();
    MenuItem1 = new wxMenuItem(Menu1, ID_MENUITEM1, _("Quit\tAlt-F4"), _("Quit the application"), wxITEM_NORMAL);
    Menu1->Append(MenuItem1);
    MenuBar1->Append(Menu1, _("&File"));
    Menu2 = new wxMenu();
    MenuItem2 = new wxMenuItem(Menu2, idMenuAbout, _("About\tF1"), _("Show info about this application"), wxITEM_NORMAL);
    Menu2->Append(MenuItem2);
    MenuBar1->Append(Menu2, _("Help"));
    SetMenuBar(MenuBar1);
    StatusBar1 = new wxStatusBar(this, ID_STATUSBAR1, 0, _T("ID_STATUSBAR1"));
    int __wxStatusBarWidths_1[1] = { -1 };
    int __wxStatusBarStyles_1[1] = { wxSB_NORMAL };
    StatusBar1->SetFieldsCount(1,__wxStatusBarWidths_1);
    StatusBar1->SetStatusStyles(1,__wxStatusBarStyles_1);
    SetStatusBar(StatusBar1);
    BoxSizer1->Fit(this);
    BoxSizer1->SetSizeHints(this);

    Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&wxHelloWorldFrame::OnButton1Click);
    Connec



Сообщение, которое вы получили, не является полным. Я отредактировал сообщение, но кажется, что полное сообщение, состоящее из wxHelloWorldMain.cpp, wxHelloWorldMain.h, wxHelloWorldApp.cpp, wxHelloWorldApp.h и сообщение об ошибке.

Я даю ниже wxHelloWorldMain.h
#ifndef WXHELLOWORLDMAIN_H
#define WXHELLOWORLDMAIN_H

//(*Headers(wxHelloWorldFrame)
#include <wx button.h="">
#include <wx frame.h="">
#include <wx menu.h="">
#include <wx panel.h="">
#include <wx sizer.h="">
#include <wx statbox.h="">
#include <wx statusbr.h="">
//*)

class wxHelloWorldFrame: public wxFrame
{
    public:

        wxHelloWorldFrame(wxWindow* parent,wxWindowID id = -1);
        virtual ~wxHelloWorldFrame();

    private:

        //(*Handlers(wxHelloWorldFrame)
        void OnQuit(wxCommandEvent& event);
        void OnAbout(wxCommandEvent& event);
        void OnButton1Click(wxCommandEvent& event);
        //*)

        //(*Identifiers(wxHelloWorldFrame)
        static const long ID_STATICTEXT1;
        static const long ID_BUTTON1;
        static const long ID_PANEL1;
        static const long ID_MENUITEM1;
        static const long idMenuAbout;
        static const long ID_STATUSBAR1;
        //*)

        //(*Declarations(wxHelloWorldFrame)
        wxPanel* Panel1;
Line49        wxStaticText* Button1;
Line50        wxStaticText* StaticText1;
        wxStatusBar* StatusBar1;
        //*)

        DECLARE_EVENT_TABLE()
};

#endif // WXHELLOWORLDMAIN_H

Error Message
||=== Build: Debug in wxHelloWorld (compiler: GNU GCC Compiler) ===|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.h|49|error: 'wxStaticText' does not name a type|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.h|50|error: 'wxStaticText' does not name a type|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp||In constructor 'wxHelloWorldFrame::wxHelloWorldFrame(wxWindow*, wxWindowID)':|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp|73|error: 'StaticText1' was not declared in this scope|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp|73|error: expected type-specifier before 'wxStaticText'|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp|75|error: 'Button1' was not declared in this scope|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp|75|error: expected type-specifier before 'wxStaticText'|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp|127|warning: 'virtual void wxWindowBase::SetInitialBestSize(const wxSize&)' is deprecated [-Wdeprecated-declarations]|
C:\wxWidgets-2.8.12\include\wx\window.h|1453|note: declared here|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp|127|warning: 'virtual void wxWindowBase::SetInitialBestSize(const wxSize&)' is deprecated [-Wdeprecated-declarations]|
C:\wxWidgets-2.8.12\include\wx\window.h|1453|note: declared here|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.cpp|127|warning: 'virtual void wxWindowBase::SetInitialBestSize(const wxSize&)' is deprecated [-Wdeprecated-declarations]|
C:\wxWidgets-2.8.12\include\wx\window.h|1453|note: declared here|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.h|49|error: 'wxStaticText' does not name a type|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldMain.h|50|error: 'wxStaticText' does not name a type|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldApp.cpp|33|warning: 'virtual void wxWindowBase::SetInitialBestSize(const wxSize&)' is deprecated [-Wdeprecated-declarations]|
C:\wxWidgets-2.8.12\include\wx\window.h|1453|note: declared here|
F:\CPrograms\wxCB_GUI_Projects\wxHelloWorld\wxHelloWorldApp.cpp|33|warning: 'virtual void wxWindowBase::SetInitialBestSize(const wxSize&)' is deprecated [-Wdeprecated-declarations]|
C:\wxWidgets-2.8.12\include\wx\window.h|1453|note: declared here|
||=== Build

Line 49 and 50 are
 wxStaticText* Button1;
        wxStaticText* Static

2 Ответов

Рейтинг:
14

Richard MacCutchan

Вам нужно показать свой код и точное сообщение, а также указать, какая строка вызывает ошибку. Но сначала зайдите в wxWidgets: ссылка на класс wxStaticText[^ и посмотрите, объясняет ли это, что вы делаете неправильно.


Bipin5

Детали перешли в вопрос.

Richard MacCutchan

Сообщение об ошибке, упомянутое выше, находится в строке 49 wxHelloWorldMain.h, так что это то, что нам нужно увидеть. И когда вы разместите его, пожалуйста, определите строку 49, Не оставляйте нас считать.

Bipin5

Детали перешли в вопрос.

Richard MacCutchan

Вы упускаете из виду то, что #include <wx/stattext.h> заявление, как указано в ссылке, которую я дал вам выше.

Bipin5

Спасибо за предложение. Я не мог понять, в какой файл мне следует добавить "#include<wx stattext.h="">. Я добавил: wxHelloWorpdMain.cpp и запустить программу. У меня появилось еще больше ошибок. Затем я добавляю в wxHelloWorldMain.h. здесь также я получил больше ошибок.

Я решил еще раз переделать весь проект с нуля в соответствии с деталями, приведенными в статье codeproject. Я получил результат в порядке. Единственное, что меня не устраивало, - это внешний вид wxpanel. Но это мелочь.

Спасибо Вам за всю поддержку.

megaadam

Ах, я пропустил ваш ответ. Теперь это в два раза легче решить.

Рейтинг:
1

megaadam

быстрый Гугл дает вам
#include <wx/stattext.h>