初识MFC第一天

news2024/11/24 15:56:59

文章目录

  • 前言
  • 一、初识MFC
  • 二、初始相关API
  • 附录


前言

刚开始进入Win32开发时,会发现一些变量类型似乎在C语言中未曾见过。其实这些变量类型或是与C/C++已有的数据类型相近的,是通过C语言的原始类型重新定义而成的。引入这些数据类型的主要目的是为了便于程序员开发Windows应用程序,增强程序的可读性;另一个目的是为了便于代码移植,从16位操作系统升级到32位操作系统的过程中,这些重新定义的数据类型就起了相当重要的作用。
这些重新定义的变量类型就叫做Windows数据类型,主要定义在Windef.h的系统头文件中。当包含了Windows.h或者其他任何Windows头文件,都会自动包含Windef.h.。下面列举出一些常见的Win32数据类型:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


一、初识MFC

1、MFC的动态链接和静态链接:
在使用MFC应用程序向导新建工程时,选择“As a statically linked library”这个选项会编译器把MFC类库代码编译到执行文件内部;选择“As a shared DLL”使用系统内有共享的MFC动态库。前者编译出来的虽然尺寸较大,但是不需要系统提供动态库支持更加安全。在各个软件公司内一般要求使用静态链接,要求新建MFC工程时都使用静态链接方式。
2、API和MFC的关系:
API(Application Programming Interface):应用程序编程接口,是由操作系统提供给开发者的C语言格式的全局函数。第三节用到的GetDlgItemInt和SetDlgItemInt函数就是API函数,这些函数是与对象无关的C格式函数。Win32是面向API的编程平台,操作系统提供的API数量相当庞大,而且没有分类难于组织和记忆。
MFC(Microsoft Fundation Classes):微软的基础类库,这个类库分类封装了大部分Windows API,便于开发人员分类了解类库函数功能。学习过C++封装原理都知道,没有封装类的函数接口无论功能有多么强大,但是对于开发者来说都是难于使用和难于记忆的。就如同没有机箱和按钮的电视机,选台或调节音量就得到电视机主板上去找接口一样。封装类就就如同为电视机安装上机箱和按钮而且还有遥控器,选台调节音量操作都非常方便。


MFC封装的数据类型不是函数库而是类库,最常用的基本类型有字符串类(CString)、文件类(CFile)和时间类(CTime)等。用于几何空间的类有坐标点(CPoint)、空间尺寸(CSize)和矩形区域类(CRect)等,还有用来记录个群体数据的集合类,链表(CList)、动态数组(CArray)和映射类(CMap)等等。
C++成员函数尾部带const修饰,表示该函数禁止修改类对象内的数据,称作“只读成员函数”或者“常成员函数”。MFC类库中有大量此类成员函数,表示调用该成员函数时对象自身不会被改变。

二、初始相关API

代码如下(示例):

LPCSTR  中C代表 const char*
LPSTR 没有C就是char*

以前从Main函数入口现在从WinMain入口
int CALLBACK WinMain(
  _In_  HINSTANCE hInstance,
  _In_  HINSTANCE hPrevInstance,
  _In_  LPSTR lpCmdLine,
  _In_  int nCmdShow
);

1、弹出消息:图标和文字
int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);
2、查找主窗口:根据标题或者窗口类型 返回类型也是hwnd窗口类型
HWND WINAPI FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName);

 auto h = FindWindow("Notepad", NULL);  //类型
 HWND hwnd = FindWindow(NULL, "API知识点.txt - 记事本"); //标题名

3、设置标题文字:
BOOL WINAPI SetWindowText(HWND hWnd,LPCTSTR lpString);

4、获取窗口标题文字:
int WINAPI GetWindowText(HWND hWnd,LPTSTR lpString, int nMaxCount);


5、改变窗口位置和大小:
BOOL WINAPI MoveWindow(
 HWND hWnd,
 int X,
  int Y,
  int nWidth,
 int nHeight,
 BOOL bRepaint
);

对FindWindow、SetWindowText、GetWindowText基础应用:

#include<Windows.h>
int WinMain(
    _In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPSTR lpCmdLine,
    _In_ int nShowCmd
) {
   auto h = FindWindow("Notepad", "API知识点.txt - 记事本");
   auto x = FindWindow("Notepad", "提纲.txt - 记事本");

    if (!h)
       return -1;
 //  bool b =  SetWindowText(h, "hhh");
   char s[256];
   int n =  GetWindowText(h, s, sizeof(s));
   SetWindowText(x, s);
   return 0;
}

附录

什么是API(Application Programming Interface)
a)第一方接口:C语言函数库,C++类库(STL) Standard Template Library,
b)第二方接口:是操作系统提供的函数库:比如windows下是CreateThread、linux下是pthread_create
c)第三方接口:某个公司的接口,比如mysql是Oracle公司提供的mysql.h里面的所有函数。
opencv是IBM研发的图形开发库,包括识别,生成框图,计算面积等等。
点云(PCL)库包括三维形状的计算等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023届网课生就业难:挑战与策略探析

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

One-Class SVM详解

简介 One-Class SVM&#xff08;Support Vector Machine&#xff09;是一种无监督学习算法&#xff0c;用于异常检测和离群点检测。它的目标是通过仅使用正常数据来建模&#xff0c;识别出与正常模式不同的异常数据点。 One-Class SVM的工作原理如下&#xff1a; 数据映射&a…

潮玩盲盒APP系统开发

盲盒抽奖App软件界面应该包括以下几个部分&#xff1a; 首页&#xff1a;首页需要展示正在进行的抽奖活动、热门盲盒商品和刚刚开奖的中奖名单&#xff0c;让用户快速了解当前的热门活动和优惠。 抽奖详情页&#xff1a;抽奖详情页需要展示抽奖主题、奖品图片、中奖规则…

高频前端面试题汇总之计算机网络篇

一、HTTP协议 1. GET和POST的请求的区别 Post 和 Get 是 HTTP 请求的两种方法&#xff0c;其区别如下&#xff1a; 应用场景&#xff1a; GET 请求是一个幂等的请求&#xff0c;一般 Get 请求用于对服务器资源不会产生影响的场景&#xff0c;比如说请求一个网页的资源。而 P…

SAX解析XML返回对应格式的Map对象

前言 最近有一个解析大型xml的需求&#xff0c;xml大小7M&#xff0c;其中xml结构非常复杂&#xff0c;元素各种嵌套 不乏有元素下对象&#xff0c;元素下集合&#xff0c;集合下对象&#xff0c;集合下集合&#xff0c;兄弟节点&#xff0c;元素下对象下集合&#xff0c;同一元…

数字时代,你想成为一只“弱鸡”,还是一个“超级个体”?

电话延伸了人类的耳朵&#xff0c;屏幕延伸了人类的眼睛&#xff0c;汽车这样的交通工具延伸了人类的腿脚&#xff0c;人类的生存能力开始变得和技术相关&#xff0c;而这个趋势仍在加剧。 如今&#xff0c;Web3延伸了人的综合体验&#xff0c;AI延伸了人类的大脑&#xff0c;它…

MySQL(视图、存储过程与函数、流程控制、触发器)

第一章 视图 1 什么是视图 为了提高复杂的SQL语句的复用性和表的操作的安全性 &#xff0c;MySQL数据库管理系统提高了视图特性&#xff0c;所谓视图&#xff0c;本质上是一种虚拟表&#xff0c;其内容与真实的表相似&#xff0c;包含一系列带有名称的列和行数据。但是视图并…

2023年前端面试汇总 - JavaScript

1. 数据类型 1.1. JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; Symbol …

避开这12个压测误区保证有效压测

压测本质上其实就是经验的问题&#xff0c;至于技术我认为现在都是配套了&#xff0c;也有人配套的东西也搞不清&#xff0c;那还是经验的问题。提醒下&#xff0c;这篇对野路子玩压测的人蛮有用的。 一、压测的误区 首先讲压测误区&#xff0c;每个误区我会简单的总结下&…

作为超级自动化的重要先驱,流程挖掘正在成为组织运营标配

正在成为组织运营标配的流程挖掘&#xff0c;到底有哪些商业价值&#xff1f; 作为超级自动化的重要先驱&#xff0c;流程挖掘正在成为组织运营标配 文/王吉伟 AIGC正在影响越来越多的行业&#xff0c;流程挖掘领域亦不例外。 Mindzie首先宣布集成生成式AI&#xff0c;使用户…

带你详细了解Redis事务锁机制-加实列演示-上

Redis_事务_锁机制_秒杀 Redis 的事务是什么? 1、Redis 事务是一个单独的隔离操作&#xff1a;事务中的所有命令都会序列化、按顺序地执行 2、事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令请求所打断 3、Redis 事务的主要作用就是串联多个命令防止别的命令…

怎么学习和提升前端开发的能力? - 易智编译EaseEditing

要学习和提升前端开发的能力&#xff0c;您可以按照以下步骤进行&#xff1a; 掌握基础知识&#xff1a; 了解HTML、CSS和JavaScript的基本概念和语法。学习HTML用于创建网页结构&#xff0c;CSS用于样式设计和布局&#xff0c;JavaScript用于交互和动态效果。 学习框架和库&…

探讨太阳能热水器的安全隐患和雷电防护措施

太阳能热水器是指利用太阳光加热原理来获得热水的装置。随着科学技术的发展&#xff0c;太阳能热水器因其新颖、环保、节能且方便而深受消费者的喜爱&#xff0c;安装数量逐年增加。我国太阳能资源丰富&#xff0c;尤其是在广袤的西部中小城镇、农村地区&#xff0c;家家户户几…

NSSA实验和配置命令

1)拓扑 需求 2)需求&#xff1a;PC2和PC5互通 配置思路和配置命令 3&#xff09;配置思路&#xff1a; 第一步&#xff1a;先让R1能够和PC5互通&#xff0c;要先配置静态路由 [R1] ip route-static 192.168.4.0 24 192.168.18.8 第二步&#xff1a;在R8上写去往PC1/PC2的路…

定长图文验证码模型训练

文章目录 自定义数据集生成模型代码计算均值和标准差训练代码测试集成功率计算推理测试 市面上常见的验证码识别方案包括&#xff1a; 基于规则的方案&#xff1a;这种识别方案针对一些特定类型的验证码&#xff08;如数字、字母组合&#xff09;&#xff0c;利用编写规则的方式…

逛开发者集市啦,ShardingSphere 在亚马逊云科技中国峰会等你!

2023亚马逊云科技中国峰会将于6月27日-28日在上海世博中心盛大开幕。本次峰会以“共见价值成就”为主题&#xff0c;与合作伙伴展望云计算趋势及合作发展战略&#xff0c;分享行业解决方案&#xff0c;共同探讨协同销售策略和全新的 APN 计划&#xff0c;助力合作伙伴成就更多价…

计算机系统层次结构与操作系统和驱动的定义

一、程序分类 程序按其运行环境分为&#xff1a; 裸机程序&#xff1a;直接运行在对应硬件上的程序 应用程序&#xff1a;只能运行在对应操作系统上的程序 二、计算机系统的层次结构 计算机系统两种层次结构&#xff1a; 2.1 无操作系统的简单的两层结构 2.2 有操作系统的…

华为云物联网平台微信小程序开发教程2.0【完整详细教程】

一、简介 在之前曾发布过一篇文章“华为云物联网平台的微信小程序开发”&#xff0c;在最近接到部分用户私信在使用开发过程中出现的问题&#xff0c;例如API访问的"401"现象等问题&#xff0c;在重新查看上面的文章教程时发现教程内容的步骤不详细&#xff0c;现对教…

Postman快速入门(一)

一、基本介绍 postman是一款流程的接口调试工具&#xff0c;其特点就是使用简单&#xff0c;功能强大。使用角色也非常广泛&#xff0c;后端开发&#xff0c;前端人员&#xff0c;测试人员都可以使用它进行接口调试或测试。 下图是基本功能介绍 发送第一个请求 如果你是第一次…

人工智能如何彻底改变 SaaS 格局

人工智能 (AI) 正在颠覆几乎所有行业&#xff0c;并正在改变我们开展业务的方式。近年来&#xff0c;SaaS 行业一直是受影响最大的行业之一&#xff0c;人工智能在其指数级增长中发挥着至关重要的作用。在本文中&#xff0c;我们将详细讨论实施 AI 对 SaaS 产品的增长和开发有何…