Code: Select all
// main_win.hpp
#ifndef _MAIN_WIN_H
#define _MAIN_WIN_H
#include <wx/defs.h>
#include <wx/event.h>
#include <wx/frame.h>
#include <wx/panel.h>
#include <wx/scrolwin.h>
class MainWin final: public wxFrame {
public:
MainWin(const wxString &title, const wxPoint &pos, const wxSize &size);
private:
wxPanel *panel;
wxScrolledCanvas *canvas;
//void OnAbout(wxCommandEvent &event);
void OnExit(wxCommandEvent &event);
//void OnPreferences(wxCommandEvent &event);
void OnPaint(wxPaintEvent &event);
wxDECLARE_EVENT_TABLE();
};
#endif // _MAIN_WIN_H
// main_win.cpp
#include <wx/dcclient.h>
#include <wx/menu.h>
#include <wx/sizer.h>
#include <wx/textctrl.h>
#include "main_win.hpp"
wxBEGIN_EVENT_TABLE(MainWin, wxFrame)
EVT_MENU(wxID_EXIT, MainWin::OnExit)
EVT_PAINT(MainWin::OnPaint)
wxEND_EVENT_TABLE()
MainWin::MainWin(const wxString &title, const wxPoint &pos, const wxSize &size):
wxFrame(nullptr, wxID_ANY, title, wxDefaultPosition, size) {
wxMenu *file_menu = new wxMenu;
file_menu->Append(wxID_EXIT);
wxMenuBar *menubar = new wxMenuBar;
menubar->Append(file_menu, "&File");
SetMenuBar(menubar);
wxToolBar *toolbar = CreateToolBar();
panel = new wxPanel(this);
wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
canvas = new wxScrolledCanvas(panel);
canvas->GetTargetWindow()->SetSize(800,600);
//vbox->Add(canvas, 0, wxALL | wxEXPAND | wxRESERVE_SPACE_EVEN_IF_HIDDEN);
wxTextCtrl *chatbox = new wxTextCtrl(panel, -1, wxEmptyString, wxDefaultPosition,
wxDefaultSize, wxTE_PROCESS_ENTER);
vbox->Add(chatbox, 0, wxBOTTOM | wxLEFT | wxRIGHT | wxEXPAND);
panel->SetSizer(vbox);
CreateStatusBar();
SetStatusText("Not connected");
Centre();
}
void MainWin::OnExit(wxCommandEvent &event) {
Close(true);
}
void MainWin::OnPaint(wxPaintEvent &event) {
wxPaintDC dc(canvas->GetTargetWindow());
dc.SetBrush(wxBrush(wxColour("#ffffff")));
dc.SetPen(wxPen(wxColour("#000000"), 1));
dc.DrawRectangle(0, 0, 1276, 600);
}