第一个wxWidgets程序

这篇博客介绍了如何使用wxWidgets库在Visual Studio环境下创建GUI应用程序,包括设置开发环境、创建简单窗口、添加菜单、工具栏和状态栏以及消息处理。通过实例展示了从派生wxApp类、创建窗口到绑定事件处理的全过程。
摘要由CSDN通过智能技术生成

设置开发环境

在创建应用程序前,需要设置Visual Studio开发环境和WxWidgets的相关变量,具体包括:

  • 包含目录:包含WxWidgets头文件。在项目“属性→配置属性→C++目录→包含目录”项中,添加C:\wxWidgets-3.0.2\include\msvcC:\ wxWidgets-3.0.2\include
  • 库目录:包含WxWidgets库文件。在项目“属性→配置属性→C++目录→库目录”项中,添加C:\wxWidgets-3.0.2\lib\vc_dll
  • 系统环境变量:设置WxWidgets动态链接库文件目录。在Windows控制面板“系统→高级系统设置→高级→环境变量→系统变量”中,在Path变量的内容中增加C:\wxWidgets-3.0.2\lib\vc_dll
  • 预处理器定义:设置与Windows平台相关的WxWidgets宏,主要包括 _WXMSW_WXUSINGDLL等。
  • 在程序中包含程序所需的头文件。

其中,预处理器定义和包含程序所需头文件两个步骤可以通过创建一个头文件wxInc.h来集中解决,用户代码中只需包含该头文件即可。

/// wxInc.h

#ifndef _WX_INC_H_
#define _WX_INC_H_

#define __WXMSW__   /// 使用windows平台
#define WXUSINGDLL  /// 使用动态链接库

#ifdef _DEBUG
#define __WXDEBUG__  /// 使用WxWidgets调试
#endif //_DEBUG

#include "wx/config.h"

#include "wx/wx.h"       /// 使用WxWidgets通用功能和类
#include "wx/aui/aui.h" /// 使用AUI
#include "wx/artprov.h"  /// 使用预定义的图标资源

#endif ///_WX_INC_H_

简单窗口程序

最简单的WxWidgets窗口程序需要2个类:
(1)wxApp类,代表了应用程序,负责消息循环。
(2)wxFrame,代表了窗口,处理各类窗口事件。

下面创建一个简单的窗口程序。程序运行效果如下图所示。
简单窗口程序效果图

简单窗口程序创建步骤如下:
(1)从wxApp派生用户类MyApp。
wxApp采用了类似MFC的宏定义和处理机制,通过DECLARE_APP()IMPLEMENT_APP()两个宏声明和定义程序全局变量(也就是程序的入口点)。

/// MyApp.h

#include "wxInc.h"

class MyApp : public wxApp
{
public:
    virtual bool OnInit();
};

DECLARE_APP(MyApp)

如未声明DECLARE_APP()和IMPLEMENT(),则编译时会报错如下:
MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用

(2)重载wxApp::OnInit函数,在该函数内新建和显示主窗口。

/// MyApp.cpp

#include "MyApp.h"

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
    /// 1.创建窗口
    wxFrame * mainWnd = new wxFrame(NULL, wxID_ANY, wxT("main window"));                    

    /// 2.将窗口设置为程序主窗口
    SetTopWindow(mainWnd); 

    /// 3.显示窗口。
    mainWnd->Show(true);   

    return true;
}

上述程序的wxPython版本如下(简单明了):

/// MyApp1.py

import wx

if __name__ == "__main__":
    app =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值