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

可视化程序设计(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环境变量

CodeLiteDir=C:\CppPrograming\CodeLite
WXCFG=gcc_dll\mswud
WXWIN=$(CodeLiteDir)\wxWidgets-3.2.8

        0.3编译器设置

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

-g -fexec-charset=GBK -finput-charset=UTF-8

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

        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.xdnf.cn/news/17637.html

相关文章:

  • Java进阶之单列集合Set接口下的通用方法
  • Linux下的软件编程——标准IO
  • ECharts Y轴5等分终极解决方案 - 动态适配缩放场景
  • 后量子密码学的迁移与安全保障:迎接量子时代的挑战
  • NLP---IF-IDF案例分析
  • FreeRTOS学习:优化系统
  • LeetCode_哈希表
  • 论文阅读:Aircraft Trajectory Prediction Based on Residual Recurrent Neural Networks
  • OpenAI正式发布GPT-5:迈向AGI的关键一步
  • sqllabs——Less1
  • MySQL面试题及详细答案 155道(041-060)
  • ThreadLocal有哪些内存泄露问题,如何避免?
  • Mysql笔记-存储过程与存储函数
  • 【Linux】使用静态 BusyBox 解决操作系统“塌方”问题
  • ADK[3]历史对话信息保存机制与构建多轮对话机器人
  • 单片机捷径
  • nginx下lua的实现机制、Lua错误处理、面向对象
  • Unity 遮挡显示效果 Shader
  • 异步问题的概念和消除问题技巧
  • 机器学习 DBScan
  • Java语言简介
  • 《算法导论》第 17 章 - 摊还分析
  • 【Docker进阶实战】从多容器编排到集群部署
  • 谷歌DeepMind发布Genie 3:通用型世界模型,可生成前所未有多样化的交互式虚拟环境
  • 【PyTorch】单目标检测项目部署
  • BGP知识点总结
  • MACBOOK M1安装达梦8数据库
  • 机器学习实战·第三章 分类(1)
  • 组合期权:对角价差
  • Python描述符进阶:自定义文档与属性删除的艺术