MFC Windows应用开发
文章平均质量分 83
有时候完成一个windows应用程序其实也很简单
霸道小明
种一棵树最好的时间是十年前,其次是现在。如果你十年前没有种,那就现在种。
展开
-
Reg注册表读写
在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。按照这一原则,Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。我们可以通过win+R,输入regedit 查看注册表编辑器。RegCreateKeyW( )函数 参数hKey打开的注册表句柄, 或是以下预定义键之一。要创建表项的名称,必须是hKey参数原创 2022-12-04 17:46:31 · 1502 阅读 · 0 评论 -
Config配置文件读写
配置文件本质上是包含成功操作程序所需信息的文件,这些信息以特定方式构成。它们不是在程序中进行硬编码,而是用户可配置的,通常存储在纯文本文件中。原创 2022-12-01 22:53:51 · 985 阅读 · 1 评论 -
C语言文件操作
FILE为C语言提供的文件类型,它是一个结构体类型,用于存放文件的相关信息。文件打开成功时,对它作了内存分配和初始化。每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。原创 2022-12-01 22:26:27 · 2243 阅读 · 0 评论 -
Win32API操作文件
在Windows编程中CreateFile函数是用得非常多的,不仅可以打开文件,还可以打开管道、邮槽、通信资源、磁盘设备(早期Windows),控制台、目录。该函数返回一个句柄,该句柄可用于根据文件或设备以及指定的标志和属性访问文件或设备以获取各种类型的I/O。原创 2022-12-01 21:31:41 · 1808 阅读 · 0 评论 -
MFC文件操作
MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘输入输出功能。通过他的派生类可以间接的支持文本、文件、内存文件等。原创 2022-12-01 20:58:01 · 4832 阅读 · 0 评论 -
动态链接库dll详解
使用动态库前要先将.dll文件加入到程序文件目录下第一种方法:在程序里添加#pragma comment(lib,"1124TDll.lib")代码第二种方法:将lib文件添加到附加依赖项中。两种方法选一种即可在需要用到的动态库函数用关键字extern声明。原创 2022-11-29 21:30:29 · 5018 阅读 · 0 评论 -
进程的通信 - WM_COPYDATA
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。其中使用向另一进程发送消息是一种比较经济实惠的方法。通信需要将传递的消息封装在结构体中,在消息传递函数时作为lParam参数传递为自定义数据,按照自己习惯设置就好,不影响对象的传输;表示传递数据的大小(以字节为单位表示传递的数据,是一个void*类型使用时要用而不能使用PostMessage,因为SendMessage是的,会等待消息响应窗体处理消息完毕后再返回;原创 2022-11-21 22:53:03 · 3722 阅读 · 0 评论 -
进程的通信 - 命名管道
命名管道(Named Pipes),顾名思义,一个有名字的管道。命名管道的名字主要是用于确保多个进程访问同一个对象。命名管道不仅可以在同一台计算机之间传输数据,甚至能在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。原创 2022-11-20 22:27:24 · 1722 阅读 · 1 评论 -
进程的通信 - 无(匿)名管道
匿名管道是一个没有名称的管道,本质上是一块共享的内存区域。匿名管道可以实现在。这里需要注意两点,第一就是在本地机器上,这是因为匿名管道不支持跨网络之间的两个进程之间的通信,第二就是实现的是父进程和子进程之间的通信,而不是任意的两个进程。匿名管道正是因为提供的功能很单一,所以他所需要的系统开销也就比命名管道小很多。然后顺便介绍一个匿名管道的另一种功能,其通过匿名管道可以实现子进程输出重定向。原创 2022-11-18 22:25:55 · 258 阅读 · 2 评论 -
进程的通信 - 邮槽
邮槽是Windows系统提供的一种单向进程间的通信机制。对于相对简短的地坪率信息发送,使用邮槽通常比命名管道或者Unix域套接字更简单使用邮槽通信的进程分为服务端和客户端。邮槽,在创建时需要指定邮槽名,创建后邮槽。在邮槽创建后,客户端可以通过邮槽名打开邮槽,在获得句柄后可以向邮槽写入消息。,只有服务端才能从邮槽中读取消息,客户端只能写入消息。消息先入先出。客户端先写入的消息在服务端先被读取。通过邮槽通信的数据可以是任意格式的,但是一条消息。邮槽除了在本机内进行进程间的通信外,在主机间也可以通信。原创 2022-11-17 21:04:56 · 746 阅读 · 0 评论 -
进程的通信 - 剪切板
因为剪贴板是所有进程都可以访问的,所以应用程序在使用这个剪贴板时,有可能已经有其他的应用程序把数据放置到了剪贴板上,因此该进程打开剪贴板之后,就需要调用 EmptyClipboard 函数来清空剪贴板,释放剪贴板中存放的数据的句柄,并将剪贴板的所有权分配给当前的进程,这样做之后当前打开这个剪贴板的程序就拥有了剪贴板的所有权,因此这个程序就可以往剪贴板上放置数据了。这个函数将清空剪贴板,并释放剪贴板中数据的句柄,然后将剪贴板的所有权分配给当前打开剪贴板的窗口。每个内存对象的内部数据结构包括最初为零的锁计数。原创 2022-11-16 23:04:12 · 771 阅读 · 0 评论 -
多线程+socket 实现群聊服务器
通过多线程+Socket,实现群聊服务器。服务端:每当有一个连接时,服务端起一个线程去维护;.将收到的信息转发给所有的客户端;当某个客户端断开连接时需要处理断开连接客户端:接收与发送信息断开连接自定义用户名原创 2022-11-06 20:25:07 · 2339 阅读 · 2 评论 -
UDP套接字编程详解
UDP 是) 参考模型中一种无连接的协议。UDP协议与协议一样用于处理数据包。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无。UDP用来支持那些需要在之间传输数据的网络应用。包括系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。,UDP是最好的选择。原创 2022-11-05 20:22:30 · 1948 阅读 · 1 评论 -
TCP套接字编程详解
为什么要称socket为套接字?首先套接字的原词为"socket",直译过来就是插座的意思,最先采用这个词的人,觉得网络连接,就像插口和插座一样,一方插,一方被插(知乎用户回答) 除此之外,linux等系统中“套接字”对应“socket word”,所以“字”也就是对应“word”,可能指计算机数据,也可能指存储socket的数据表示,因为端口号是两个字节,就是一个WORD。 至于为什么翻译为“套接字”:有人说是“套用-接口-标识”的意思;有人说是“套接起来的字符串”的意思;有人说“是将网络数据包一层一层原创 2022-10-29 18:32:32 · 7335 阅读 · 3 评论 -
(C/C++)线程基本概念、如何创建多线程
线程是在进程中产生的一个执行单元,是CPU调度和分配的最小单元,其在同一个进程中与其他线程并行运行,他们可以共享进程内的资源,比如内存、地址空间、打开的文件等等。是CPU调度和分派的基本单位,是分配资源的基本单位进程:正在运行的程序是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。原创 2022-09-12 10:32:38 · 2998 阅读 · 0 评论 -
聊天软件项目开发2
InstantMessaging(即时通讯,实时传讯)的缩写是IM,这是一种可以让使用者在网络上建立某种私人聊天室的实时通讯服务。TCP是美国国防部设计的两种传输协议之一,另一种是UDP。UDP是一种不可靠的网络服务,负载比较小,而TCP则是一种可靠的通信服务,负载相对而言比较大。TCP采用套接字(socket)或者端口(port)来建立通信。TCP给端口到端口通信提供了错误和流量控制机制,同时TCP还负责建立连接、处理终止和中断的端对端通信控制。通常情况下我们认为TCP相比UDP具有更大的通信负载,UDP原创 2022-07-16 15:36:52 · 488 阅读 · 1 评论 -
聊天软件项目开发1
InstantMessaging(即时通讯,实时传讯)的缩写是IM,这是一种可以让使用者在网络上建立某种私人聊天室的实时通讯服务。TCP是美国国防部设计的两种传输协议之一,另一种是UDP。UDP是一种不可靠的网络服务,负载比较小,而TCP则是一种可靠的通信服务,负载相对而言比较大。TCP采用套接字(socket)或者端口(port)来建立通信。TCP给端口到端口通信提供了错误和流量控制机制,同时TCP还负责建立连接、处理终止和中断的端对端通信控制。通常情况下我们认为TCP相比UDP具有更大的通信负载,UDP原创 2022-07-15 08:36:38 · 459 阅读 · 0 评论 -
MFC控件学习:图片(bmp/png)
图片控件简介:图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。原创 2022-07-09 10:49:09 · 3544 阅读 · 2 评论 -
MFC控件学习:按钮
按钮,这应该是用的最多,也是见得最多的一种控件。各大App,不管有名无名,按钮基本上都是不可或缺的控件之一。比如:王者荣耀登陆界面的“进入游戏”就是一个按钮,只是给他整的花里胡哨了而已。...原创 2022-07-08 18:06:22 · 3483 阅读 · 1 评论 -
MFC实现类的序列化
MFC提供了CArchive类可以将对象数据保存到永久设备,比如磁盘文件。当应用程序重新启动后,CArchive类可以帮助我们从磁盘文件读取这些数据,然后在内存中重新构建对应的对象;这样就使得我们的对象数据永久存在,该过程称之为序列化(或者串行化)。...原创 2022-07-08 15:40:05 · 851 阅读 · 0 评论 -
MFC基于单个文档的文件读写
MFC基于单个文档 的文件读写,在unicode字符集下,写入的内容只能被保留一半,此时就要乘以MFC规定的sizeof(TCHAR)原创 2022-07-08 12:28:39 · 838 阅读 · 0 评论 -
【MFC】添加对话框,实现D配版画图功能
什么是对话框与用户进行交互的控件,如文件对话框,字体对话框,颜色对话捐给等,一般用于搞事,提醒等。模式对话框在其显示时,整个程序会暂停,直到关闭该对话框在项目的前面代码中,通过菜单和工具栏,已经可以支持用户绘制多种形状,如线,矩形,椭圆等,但用户还无法控制线条粗细,线型,颜色等参数编辑菜单和ID给菜单项添加COMMAND消息事件添加Dialog对话框资源更改对话框标题添加控件①文本方式获取线条宽度添加控件并更改控件描述,给对话框资源添加ID为...原创 2022-02-19 23:32:41 · 2940 阅读 · 5 评论 -
使用MFC绘制一些简单图形
一、画一个直线画直线需要起点和终点,当鼠标按下记录起点位置,鼠标弹起时记录终点位置,通过两点即可画出一条直线首先在类向导增加鼠标左键按下事件,和鼠标左键弹起事件再通过类向导添加一个CPoint类型的成员变量用来记录鼠标左键按时的位置补充事件代码void CMFCApplication6View::OnLButtonDown(UINT nFlags, CPoint point){ m_pOrigin = point; CView::OnLButtonDown(nFla原创 2022-02-12 22:57:15 · 12782 阅读 · 4 评论