当前位置: 首页 > 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.dtcms.com/a/324904.html

相关文章:

  • 从 GPT‑2 到 gpt‑oss:解析架构的迭代
  • BandiView:高效多功能的图像查看和管理工具
  • 系统调用sigaction的工作流程
  • 算法训练之队列和优先级队列
  • Ubuntu 24.04 适配联发科 mt7902 pcie wifi 网卡驱动实践
  • MySQL的存储引擎:
  • C/C++内存管理函数模板
  • Flutter开发 页面间的值传递示例
  • 基于C语言(兼容C++17编译器)的记账系统实现
  • 虚拟机安装 爱快ikuai 软路由 浏览器无法访问/拒绝连接
  • 数据库面试题集
  • Effective C++ 条款34:区分接口继承和实现继承
  • 数据结构(17)排序(下)
  • 深度剖析 P vs NP 问题:计算领域的世纪谜题
  • Graham 算法求二维凸包
  • PG靶机 - Resourced
  • 【51单片机按键闪烁流水灯方向】2022-10-26
  • 【LeetCode】102 - 二叉树的层序遍历
  • MVC结构变种——第三章核心视图及控制器的整体逻辑
  • idea中使用maven造成每次都打印日志
  • matlab实现随机森林算法
  • [SUCTF 2019]Pythonginx
  • JS中typeof与instanceof的区别
  • 【精彩回顾·成都】成都 User Group×柴火创客空间:开源硬件驱动 AI 与云的创新实践!
  • JS 注释类型
  • ADK[3]历史对话信息保存机制与构建多轮对话机器人
  • scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释
  • 【Canvas与戳记】黑底金Z字
  • 正确使用SQL Server中的Hint(10)— 常用Hint(2)
  • Spring WebSocket安全认证与权限控制解析