c语言gui知识

c语言gui界面编程学习

1. Windows程序简介:

实际上Vindows系统大家应该再熟悉不过了,Vindows程序呢也主要分那么几种,例如:eXe的可执行程序,dl的动态链 接库程序,b的静态库程序,SyS的驱动类型程序等等。这些都可以用VC++来开发。 EX类的程序从操作界面的使用角度来说又分成两种: 第一种就是我们之前一直使用的黑窗口的控制台下的程序,这种程序一般没有什么界面,都是使用命令行进行操作,比如: ipconfig、ping之类的。使用系统提供的cmd控制台进行加载。入口点函数是main. 第二种就是我们接下来要讲解的非控制台类型的程序,这种程序可以有界面,也可以没有界面。想要界面就调用创建窗口的 ==API函数== 去创建个界面出来,不想要界面呢不创建就可以了。所以呢比较灵活。入口点函数是WinMain。

2. windows编程开发相关概念:

Windows API:Windows操作系统应用程序接口(Windows API),有非正式的简称法为WinAPI,是微软对于 Vindows操作系统中可用的核心应用程序编程接口的称法。它被设计为各种语言的程序调用,也是应用软件与Windows系 统最直接的交互方式。大多数驱动程序需要对Windows系统更底层次访问接口,由所用版本的Windows的Native APL来提 供接口。 Windows有一个软件开发包(SDK,software development kit)提供相应的文档和工具,以使程序员开发使用Windows API的软件和利用Windowsj技术。 说了这么多,对于新手来说可能还是不太理解,我用通俗一点的话来解释下! 有人会问了我都学完了C++,难道还不能编写Windows:系统下的应用程序吗?我还得学其他的东西吗?答案是:能,但是 只能编写一些简单的控制台下的黑窗口程序。或者说只能调用C++基本语言内部的函数。 如果你要创建一个窗口,如果你要创建一个按钮,如果你要创建一个菜单,如果你要创建一个进程,如果你要做一个带界面 的任务管理器,以上这些单纯使用C++语言能做到吗?答案是:肯定做不到了。

GDI 的概念

GDI:Graphics Device Interface,即图形设备接口,是Windows API的一个重要组成部分。它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。

gui框架使用

[[post/14.新语言学习记录/语言技术/cpp/easyx框架学习/easyx框架学习#easyx框架学习| easyx框架笔记]] [[post/14.新语言学习记录/语言技术/cpp/qt软件开发/_index | qt框架使用笔记]]

mfc学习资料

官方文档

mfc图形界面教程

mfc基础学习教程

mfc项目实战

个人总结

vs 编辑器 mfc 目录理解

mfc环境安装教程

目录 用途
源文件 代码文件
资源文件 用于管理图片,ui等资源文件
.rc目录 用来存放一些窗口 ui文件的文件夹
工具箱 通过这个面板可以拖拽控件到页面,用来绘制页面
String Table 在这里可以看到很多定义的字符串常量

经验

  1. 以 Afx开头的确定为 MFC库中的全局函数
  2. :: 开头的确定为 win32的 api函数
  • 单文档视图架构程序
    • CWinApp 负责管理应用程序流程
    • CFrameWnd - 框架窗口类,负责管理框架窗口
    • CView -视图窗口类,负责显示数据
    • CDocument -文档类,负责管理数据
  • 多文档视图架构程序
    • CWinApp 引用程序类
    • CMDIFrameWnd,多文档主框架窗口类
    • CMDIChildWnd ,多文档子框架窗口类
    • CView -视图窗口类,显示数据
    • CDocument, 文档类,管理数据
  • 对话框应用程序
    • CWinApp - 应用程序类
    • CDialog- 对话框窗口类

写代码

设置开发环境

先 visual studio installers 安装 MFC的单个组件,才能有创建 MFC的选项

选项中要进行 设置

设置 Use of MFC 选项使用 Use MFC in a Static Library 用于静态导入

  • 头文件为 <afxwin.h>
  • setting 当中设置使用MFC库
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class CMyWinApp public CWinApp{
public:
CMyWinAppO{
    virtual BOOL InitInstance(){
        CMyFrameWnd*pFrame new CMyFrameWnd,
        pFrame->Create(NULL,"MFCBase");
        m_pMainWnd pFrame;
        pFrame->ShowWindow(SW_SHOW);
        pFrame->UpdateWindow();
        return TRUE;
    }
}
    CMyWinApp theApp; //爆破点,MFC程序入口会主动获取这个变量,然后运行

vs断点快捷键

快捷键 解释
f9 断点
f10 进入下一行 step over
f11 进入函数调用 step into

入口函数

和 win32的不同, 我们在mfc找不到入口函数,因为 mfc 把入口函数给封装了。MFC 来安排程序的流程。

安装 json库

参考教程

包管理器 vcpkg

安装 vcpkg

1
2
3
4
5
6
7
8
9
.\vcpkg\bootstrap-vcpkg.bat
# 这个命令用来下载 vcpkg.exe
.\vcpkg\vcpkg.exe search fmt
# 查找 fmt 这个 lib
.\vcpkg\vcpkg.exe install fmt:x64-windows

.\vcpkg\vcpkg.exe integrate install
# 这个命令可以直接 让 vs找到这个库,集成进 vs里面
.\vcpkg\vcpkg.exe