当前位置: 首页 > news >正文

可视化程序设计(4) - 第一个图形窗口程序

0.准备工作-CodeLite设置

        要设置的内容有系统path,CodeLite环境变量,编译器等。

        0.1 增加两个path

我的电脑-属性-高级系统设置-环境变量:

双击打开新窗口,点新建两个路径(D:\CppPrograming\CodeLite\MinGW\binD:\CppPrograming\CodeLite\wxWidgets-3.2.8\lib\gcc_dll)。

        0.2 CodeLite环境变量

        0.3编译器设置

点+号新增,选中目录D:\CppPrograming\CodeLite\MinGW\bin,等自动填充完毕后,根据上图修改即可。还有一个编译选项,用于解决中文显示不正确问题,如下图:

上述设置要注意空格和全角/半角问题,设置错误会影响后面的程序编译或运行。

        0.4 Plugins(插件)设置

        最常用的是两个插件,界面设计器和代码补全。点击菜单Plugins->Manage Plugins,选择LanguageServerPlugin和wxCrafter。

1.新建workspace

首次使用CodeLite,建立一个workspace。后面的项目都可以放在这个workspace里面。

2.wxWidgets 应用

main.cpp

#include "MainDialog.hpp"
#include <wx/app.h>
#include <wx/event.h>
#include <wx/image.h>// Define the MainApp
class MainApp : public wxApp
{
public:MainApp() {}virtual ~MainApp() {}virtual bool OnInit(){// Add the common image handlerswxImage::AddHandler(new wxPNGHandler);wxImage::AddHandler(new wxJPEGHandler);MainDialog mainDialog{ nullptr };mainDialog.ShowModal();return false;}
};DECLARE_APP(MainApp)
IMPLEMENT_APP(MainApp)

还有其它的程序文件,都是CodeLite的wxCrafter自动生成的。我们先编译和运行程序,然后再看其中我们需要了解的地方。运行结果如下:

3.进一步了解

3.1 和hello world的不同

hello world 是console程序,入口是函数是main; 本程序是GUI(Graphic User Interface)图形程序,Windows操作系统入口函数是WinMain()。

3.2 C++和C的不同

C是结构化的,C++是面向对象的。C++向下兼容C。

3.3 图形界面设计

用程序写出来,用工具画出来(可视化设计)。

4. wxCrafter设计界面

双击wxCrafter,打开设计界面。

增加一个按钮(button),一个输入框(TextCtrl)。并生成按钮点击事件响应代码。先保存,再生成代码(Generate Code)。

然后回到程序设计界面,打开文件MainDialog.cpp,生成了函数

void MainDialog::OnButton21ButtonClicked(wxCommandEvent& event),这个就是我们写按钮事件各应的地方。比如,当点击MyButton时,显示”欢迎"。代码如下:

void MainDialog::OnButton21ButtonClicked(wxCommandEvent& event)
{m_textCtrl22->WriteText("欢迎");
}

编译运行。

http://www.lryc.cn/news/616077.html

相关文章:

  • Python元组
  • 计算XGBoost分类模型的错误率
  • Qt 框架全面解析:从基础到应用
  • 基于C语言(兼容C++17编译器)的记账系统实现
  • CompletableFuture实现Excel sheet页导出
  • RabbitMQ面试精讲 Day 19:网络调优与连接池管理
  • GitHub上为什么采用Gradle编译要多于Maven
  • Excel合并同步工具V1.0
  • Pytorch深度学习框架实战教程10:Pytorch模型保存详解和指南
  • Spring Boot集成WebSocket
  • Spring Boot与WebSocket构建物联网实时通信系统
  • Android Intent 解析
  • Leetcode 3644. Maximum K to Sort a Permutation
  • 数学建模——回归分析
  • 香橙派 RK3588 部署 DeepSeek
  • 【2025CVPR-图象分类方向】ProAPO:视觉分类的渐进式自动提示优化
  • 【Linux】通俗易懂讲解-正则表达式
  • WAIC2025逛展分享·AI鉴伪技术洞察“看不见”的伪造痕迹
  • Jetpack系列教程(二):Hilt——让依赖注入像吃蛋糕一样简单
  • JavaWeb(苍穹外卖)--学习笔记17(Apache Echarts)
  • 【鸿蒙/OpenHarmony/NDK】什么是NDK? 为啥要用NDK?
  • 【图像算法 - 11】基于深度学习 YOLO 与 ByteTrack 的目标检测与多目标跟踪系统(系统设计 + 算法实现 + 代码详解 + 扩展调优)
  • 机器学习——DBSCAN 聚类算法 + 标准化
  • Python 实例属性和类属性
  • 安卓录音方法
  • Java 后端性能优化实战:从 SQL 到 JVM 调优
  • 深入解析React Diff 算法
  • Word XML 批注范围克隆处理器
  • React:useEffect 与副作用
  • MyBatis的xml中字符串类型判空与非字符串类型判空处理方式