wxWidgets学习笔记(二):初步框架搭建

本文介绍使用wxWidgets库创建GUI程序的基本步骤,包括程序入口、窗口类设计与事件处理。探讨了如何通过继承wxApp类并重载OnInit函数来启动程序,以及如何设计窗口类并添加菜单与状态栏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:
本文是作者的一点总结,对所学的回顾与记录,如有不妥之处,欢迎大家指正,并且讨论交流。

一个典型的GUI程序所做的事情包括:显示控件窗口,在窗口上绘图或图像,响应来自鼠标,键盘或者其他设备的输入,和其他进程通信,调用其他应用程序等

每个应用程序都有入口点,也就是程序开始执行的地方,wxWidgets通过继承wxApp来实现,必须重载其bool OnInit()函数,返回值为true。

/**********************************
*文件名:MainApp.h
*实现文件:MainApp.cpp
*创建时间:2019年12月30日
*作者:李欢
*描述:程序入口
*其他:......
***********************************/
#include <wx/app.h>
class MainApp:public wxApp
{
public:
    virtual bool OnInit();
    virtual int OnExit();
    DECLARE_APP(MianApp)
};

OnInit()函数中应该至少有一个窗口实例,初始化应用程序的一些数据,
返回为真开始时间循环,返回为假释放资源退出。

/************************************
* 文件名:MainApp.cpp
* 声明文件:MainApp.h
* 其他:
************************************/
#include “MainApp.h”
IMPLEMENT_APP(MainApp)

bool MainApp::OnInit()
{
    MainFrame *frame =new MainFrame(NULL);
    frame->Show();    //显示
    frame->Centre();  //居中
    return true}
int MainApp::OnExit()
{
    return wxApp::OnExit();
}

设计一个窗口类,一般为顶层窗口,wxFrame与wxDialog;添加各种控件,GUI界面以及事件处理函数.此为一个简单的实现。

//文件名;MainFrame.h
#include <wx/frame.h>
class MainFrame : public wxFrame
{
public:
    MainFrame(wxWindow *parent);
    void OnQuit(wxCommandEvent& event);
    void OnAbout(wxCommandEvent& event);
    
    DECLARE_EVENT_TABLE()
};
#include “MainFrame.h”
#include <wx/wx.h>

BEGIN_EVENT_TABLE(MainFrame, wxFrame)
    EVT_MENU(wxID_ABOUT, MainFrame::OnAbout)
    EVT_MENU(wxID_EXIT, MainFrame::OnQuit)
END_EVENT_TABLE()

MainFrame::MainFrame(wxWindow *parent)
: wxFrame(parent, wxID_ANY, "test")
{
    wxMenu ∗fileMenu = new wxMenu;
    wxMenu ∗helpMenu = new wxMenu;
    helpMenu−>Append(wxID ABOUT, wxT(&About...\tF1”),
    wxT(”Show about dialog”));
    fileMenu−>Append(wxID EXIT, wxT(”E&xit\tAlt−X”),
    wxT(”Quit this program”));
    wxMenuBar ∗menuBar = new wxMenuBar();
    menuBar−>Append(fileMenu, wxT(&File”));
    menuBar−>Append(helpMenu, wxT(&Help”));
    SetMenuBar(menuBar);
    CreateStatusBar(2);
    SetStatusText(wxT(”Welcome to wxWidgets!));
}

void MainFrame::OnAbout(wxCommandEvent& event)
{
    wxString msg;
    msg.Printf(wxT(”Hello and welcome to %s”),
    wxVERSION_STRING);
    wxMessageBox(msg, wxT(”About Minimal”),
    wxOK | wxICON_INFORMATION, this);
}

void MainFrame::OnQuit(wxCommandEvent& event)
{
    Close();
}

尽信书不如无书,多看多实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值