VS 2017/MFC
MFC
在狂风中的少年
比我优秀的人都那么拼命,我还有什么理由不努力。
展开
-
工作线程与界面线程
工作线程与界面线程区别工作线程与界面线程的区别在于:消息循环模态对话框有自己的消息循环非模态对话框需要其所在线程中有消息循环MSG msg = { 0 }; while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }在界面的操作时最好还是在界面线程中进行处理,但是如果处理的是非本线程的窗口时建议用发消息的方式!界面线程的创建:使用类向原创 2021-08-24 08:18:05 · 358 阅读 · 0 评论 -
线程间通信
线程间通信全局变量或类的成员变量1. 全局变量定义一个全局变量,开启两个线程一个进行自减,一个进行打印,并使用CCriticalSection类’临界区’进行线程同步。//CSyncThreadDlg.hUINT ThreadPoc3(LPVOID pParam);//全局变量 线程函数UINT ThreadPoc4(LPVOID pParam);extern UINT g_Num;public:CCriticalSection m_cs;//临界区对象////CSyncThrea原创 2021-08-24 01:08:25 · 112 阅读 · 0 评论 -
捕获系统调试信息输出的工具
捕获系统调试信息输出的工具DebugView是一个系统调试信息输出的捕获工具。使用请参考DebugView 简单使用在程序中使用如下函数: 1> OutputDebugString 或者在MFC中使用TRACE 2> 内核模式中使用Out_Debug_String,DbgPrint,_Debug_Printf_Service 编译程序为DEBUG版本,然后运行程序(不是在vs 中运行,是单独exe运行),打开debugview 就可以在其中看到输出的调试信息。DebugVi原创 2021-08-19 01:01:11 · 234 阅读 · 0 评论 -
[MFC小工具]电脑信息
软件功能查看电脑的用户名、CPU、内存大小和硬盘容量的使用信息开发环境系统Windows 10编译器Visual studio 2017掌握技术MFC基本控件定时器的使用屏蔽Esc和F1弹出帮助文档软件效果图经过验证和我电脑的信息一样...原创 2021-08-02 01:12:50 · 152 阅读 · 0 评论 -
[MFC]CString对象的提高
文章目录一、其他类型与 CString 对象类型的转换1. 格式化字符串2. CString向 int、TCHAR * 类型的转换3. CString 对象的 Ansi 与 Unicode 转换二、CString对象字符串所占用的字节数一、其他类型与 CString 对象类型的转换1. 格式化字符串int、TCHAR * 向CString类型的转换int num = 100;CString str;str.Format(_T("%d"), num);2. CString向 int、TCH原创 2021-07-30 01:43:31 · 82 阅读 · 0 评论 -
[MFC]CString对象的入门
CString是基于TCHAR数据类型的对象。如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为char,即8位字符类型。在UNICODE方式下,CString对象由16位字符组成。非UNICODE方式下,CString对象由8位字符组成。当不使用_UNICODE时,CString是多字节字符集(MBCS,也被认为是双字节字符集,DBCS)。一、CString 类对象的初始化:CString s1; // 空字符串CStrin原创 2021-07-30 01:41:32 · 545 阅读 · 0 评论 -
Ansi 与 Unicode编码格式(2)
一、不同编码格式下的字符串处理及相互转换1. Ansichar、char * 、const char *CHAR、(PCHAR、PSTR、LPSTR)、LPCSTR2. Unicodewchar_t、wchar_t * 、const wchar_t *WCHAR、(PWCHAR、PWSTR、LPWSTR)、LPCWSTR3. T 通用类型TCHAR、(TCHAR * 、PTCHAR、PTSTR、LPTSTR)、LPCTSTRP代表指针的意思,STR代表字符串的意思,L是长指针的意思,原创 2021-07-30 01:39:14 · 570 阅读 · 0 评论 -
[MFC技巧]定时器
定时器的主要功能是按照程序间隔时间,间隔性的产生WM_TIME消息,发送到指定窗口,窗口会对WM_TIME消息进行处理。一、WM_TIMER消息映射进行时间控制调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。此方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅.原创 2021-07-29 01:16:23 · 1132 阅读 · 0 评论 -
窗口句柄、位置
文章目录FindWindow函数用法1. 函数声明2.MFC中使用GetClassName函数用法1. 函数原型2、MFC中使用MoveWindow函数用法1. 函数定义2. MFC中使用FindWindow函数用法1. 函数声明参数一:找的窗口的类参数二:找的窗口的标题返回值:标识了具有指定的类名或窗口名的窗口。如果没有找到这样的窗口,则返回NULL。返回的CWnd*值可能是临时的,不能被保存以供将来使用。static CWnd* PASCAL FindWindow( LPCTSTR lps原创 2021-07-28 02:31:58 · 1805 阅读 · 0 评论 -
[MFC小工具]调整软件位置
问题场景电脑连接多个显示器,并运行多个软件,需将启动的软件移动到指定的显示器上。开发环境系统Windows 10编译器Visual studio 2017(多字节集)掌握技术MFC基本控件的使用FindWindow、GetWindowRect和MoveWindow函数的使用软件效果图...原创 2021-07-28 01:24:03 · 140 阅读 · 0 评论 -
[MFC控件]为Button按钮设置图标
MFC设置图标按钮(有两种方式):1、将CButton样式指定为BS_BITMAP,为按钮设置位图头文件:private: CButton m_Button_bmp;//给此控件设置位图源文件:m_Button_bmp.Create(L"按钮", WS_CHILD | WS_VISIBLE | BS_BITMAP, CRect(300, 100, 400, 250), this, 10000);HBITMAP hBmp = LoadBitmap(AfxGetInstanceHandle(),原创 2021-07-26 00:22:39 · 1788 阅读 · 0 评论 -
[MFC控件]获取Edit编辑框内容
文章目录一、设置编辑框变量二、通过ID获取一、设置编辑框变量1、为编辑框控件添加一个类型为CEdit的变量m_EditCString str;m_Edit.GetWindowText(str);2、为编辑框控件添加一个类型为CString的变量m_Edit_valueCString str;str.Format(m_Edit_value);二、通过ID获取CString str;//密文GetDlgItem(IDC_EDIT1)->GetWindowText(str);原创 2021-07-26 00:19:00 · 9225 阅读 · 0 评论 -
屏蔽按Esc、Enter和Alt+F4键时退出
解决按Esc、Enter和Alt+F4键退出软件的显示。首先使用类向导功能添加虚函数PreTranslateMessage修改代码BOOL CAutostartDlg::PreTranslateMessage(MSG* pMsg){ if (pMsg->message == WM_KEYDOWN)//WM_KEYDOWN 非系统键即不与ALT联用的情况 { switch (pMsg->wParam) { case VK_ESCAPE://屏蔽ESC {原创 2021-07-22 01:26:45 · 751 阅读 · 0 评论 -
[MFC小工具]软件自启
软件功能:定时去启动一个软件(.exe),前提需要在配置文件配置需要运行的软件名和倒计时时间开发环境系统Windows 10编译器Visual studio 2017掌握技术:1、MFC基本控件的使用2、读写ini配置文件3、定时器的使用4、调用外部程序5、屏蔽Esc、Enter和Alt+F4退出程序6、屏蔽F1弹出帮助文档7、更换标题栏图标软件效果图:...原创 2021-07-22 01:13:47 · 96 阅读 · 0 评论 -
线程创建的方式
一、创建线程的三种方式1. CreateTread函数的具体格式如下:HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParamete原创 2021-07-19 00:57:31 · 169 阅读 · 0 评论 -
多线程入门
一、什么是多线程多线程编程的含义是将程序任务分成几个并行的子任务。特别是在网络编程中,你会发现很多功能是可以并发执行的。比如网络传输速度较慢、用户输入速度较慢,你可以用两个独立的线程去完成这两个功能,而不影响正常的显示或其它功能。多线程是与单线程比较而言的,普通的Windows采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是针对一个函数,只有等这个函数执行完之后,主程序才能接收另外的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件原创 2021-07-15 02:26:13 · 128 阅读 · 0 评论 -
SkinMagic、Skin++和VCLSkins皮肤库的使用
在进行开发的过程中发现MFC本身的界面比较丑,查阅资料说可以直接借用第三方界面库。使用(SkinMagic、Skin++、VCLSkins)皮肤库,来直接美化界面。一、开发环境VS 2017SkinMagic、Skin++、VCLSkins皮肤库二、SkinMagic的使用方法1. 制作SkinMagic需要自己使用SkinMagic提供的SkinMagicBuildr设计自定义风格的一套皮肤。这里我使用的是网上已经制作好的,若自己有兴趣可以去进行制作。2. 往项目中添加SkinMagic原创 2021-07-19 00:39:05 · 2738 阅读 · 2 评论 -
VS项目字符集
在使用VS进行编码过程中,查看项目属性看到项目的默认值下有一个字符集选项,看下图:多字节字符集在最初的Internet上只有一种字符集–那就是ASCII字符集,它相信大家都知道,它使用7bits来表示一个字符,总共表示128个字符,其中包括英文字符、数字、标点符号等字符。在后来有进行扩展,使用8个bits来表示一个字符,总共可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号。后来,由于各国语言的加入,ASCII已经不能满足信息交流的需要,为了能够表示其它国家的文字,各国在原创 2021-07-13 00:21:08 · 1996 阅读 · 1 评论 -
CString与Hex之间的相互转换
问题描述在写网络调试助手或者写串口调试助手的时候会用到CString与Hex之间的相互转换代码实现1. ASCII转成HEX//Ascii转HEXCString CNetAssistDlg::Ascii2Hex(CString str_ASCII){ int i; int length = str_ASCII.GetLength(); CString str_HEX; CString temp; for (i = 0; i < length; i++) { temp.Fo原创 2021-07-09 01:44:31 · 1661 阅读 · 0 评论 -
MFC- socket 编程
https://www.cnblogs.com/506941763lcj/p/11042313.html转载 2021-07-05 23:33:54 · 95 阅读 · 0 评论 -
Windows 常用消息大全
https://blog.csdn.net/zhangguofu2/article/details/19236081转载 2021-07-02 01:26:29 · 69 阅读 · 0 评论 -
[MFC]Tab Control控件
TabControl的使用在主对话框窗口添加Tab Control控件调整好Tab Control控件的位置,鼠标右键添加变量并为控件添加控件变量m_tab双击子对话框界面为其添加MFC类,基类为CDialog在资源视图下添加两个对话框,分别修改其属性,Border改为None,Style改为child在主对话框头文件中添加这两个对话框的头文件,并在主对话框类中添加#pragma once#include "TabControl1.h"#include "TabControl2.h原创 2021-07-02 00:16:39 · 2464 阅读 · 0 评论 -
[MFC控件]IP地址控件
文章目录使用场景:`CIPAddressCtrl`类的成员的属性:1、空内容判断 `CIPAddressCtrl::IsBlank()`2、清空控件 `CIPAddressCtrl::ClearAddress()`3、获取IP地址 `CIPAddressCtrl::GetAddress()`方法一方法二4、设置`IP`地址 `CIPAddressCtrl::SetAddress()`方法一方法二 使用SetFieldRange函数IP地址控件的主要作用就是进行前台控件内容和后台IP地址的相互原创 2021-06-30 02:23:55 · 1704 阅读 · 1 评论 -
[MFC]使用编辑框来设置IP地址
我们除了使用IP控件来设置控件之外还可以使用编辑框来设置IP,这样的话,就需要来进行判断我们输入的IP是否合法判断IP地址合法的标准:①字符串中必须包含3个符号“.”;②被符号“.”分隔的4个字符串的长度必须小于或等于3;③被符号“.”分隔的4个字符串必须可以转换成整数;④被符号“.”分隔的4个字符串转换成的整数不得大于255bool IsValidIP(char *ip){ std::string sip=ip; int pos=(int)sip.fi.原创 2021-06-30 02:11:13 · 931 阅读 · 1 评论 -
[MFC]模态对话框与非模态对话框
MFC中有两种类型的对话框: 模态 对话框和非模态 对话框。模态 对话框是指当其显示时,程序会暂停执行,直到关闭这个 模态 对话框后,才能继续执行程序中其他任务。 (如我们常见的“打开文件”对话框)非 模态 对话框是指当其显示时,允许转而执行程序中其他任务,而不用关闭这个对话框。两者的区别在于当对话框打开时,是否允许其他对象的操作。(如我们常见的“查找和替换对话框”)模态对话框在程序运行时,若出现了模态对话框,那么主窗口将无法发送消息,知道模态对话框退出才能发送。点击模态对话框的OK按钮,模原创 2021-06-29 00:58:28 · 1287 阅读 · 0 评论 -
【VS 2017】报错error C2664解决方式
报错:解决办法:选中项目,然后点击属性——>配置属性——>常规——>项目默认值——>字符集,选为“使用多字节字符集"如图:原创 2021-06-25 01:26:04 · 4170 阅读 · 0 评论 -
[MFC小工具]md5加密工具
软件功能:将明文字符串加密成密文,并通过在线网站进行解密验证掌握技术:1、对MFC框架的熟悉和基本控件(编辑框、静态框和按钮)的使用2、MFC对话框最大化时控件也随之发生改变3、MD5加密算法效果图:通过cmd5在线网站来验证是否加密正确:...原创 2021-06-25 01:02:30 · 377 阅读 · 0 评论 -
MFC实现对话框的最大化功能
想必大家都有在使用MFC写完程序之后,想让写的程序在点击最大化或者使用鼠标拖住边框之后,也能让窗口内各个控件大小及其位置的也随之改变。这里使用的原理就是利用 MoveWindow、SetWindowPos 等函数进行窗口内各个控件大小及位置的改变!实现过程:新建一个对话框,在界面上布置好自己的控件。为对话框添加"最大化"按钮,对话框的Maximize Box属性设置为True在这里自己可以进行尝试看看效果添加响应 WM_SIZE 消息,进行各个控件位置的调整:void CM原创 2021-06-24 02:35:03 · 2532 阅读 · 0 评论 -
VS2013报错 error MSB8031解决方法
问题:error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information.经过查阅发现是原创 2021-06-24 02:30:15 · 734 阅读 · 0 评论 -
MFC基本控件的使用
文章目录1、基于对话框学习控件2、CStaticText 静态文本3、EditCtrl 属性4、下拉框Combo Box5、ListControl列表控件1、基于对话框学习控件1.1 对话框 模态非模态1.2 按钮 两个 captain修改内容 直接输入内容1.3 点击触发事件 右侧属性 闪电图标 ; 右键按钮 添加事件处理程序 ; 双击按钮1.4 插入窗口 窗口 右键 添加类1.5 模态窗口创建 CDlgExec dlg1.5.1 dlg.DoModal()1.6 非模态创建1.6原创 2021-06-08 22:47:22 · 2097 阅读 · 0 评论 -
【MFC】标题栏图标的更换
在使用MFC开发的软件有一个默认的图标,但是有时我们需要自己更换一个图标来替换原有图标环境:Visual studio 2017文章目录1.寻找`.ico`图片3.修改标题栏图标1.寻找.ico图片我们需要的是.ico图片,但是我么一般的图片都是.jpg、.png、.gif。我们可以通过https://www.bejson.com/ui/icomaker/ 网站来进行转换。3.修改标题栏图标导入生成的.ico图片,并在Resource.h中将添加的ico资源的值该为最小。#define I原创 2020-09-25 01:43:20 · 501 阅读 · 0 评论 -
读写ini配置文件
文章目录一、MFC对ini配置文件的操作1.1、WritePrivateProfileString()写配置文件1.2、GetPrivateProfileString()读配置文件二、实例代码一、MFC对ini配置文件的操作1.1、WritePrivateProfileString()写配置文件在VC++之MFC类库中搜CWinApp::GetProfileStringBOOL WritePrivateProfileStringA( LPCSTR lpAppName, //ini文件的字段名原创 2020-09-23 00:58:57 · 374 阅读 · 0 评论 -
TinyXML2的调用和遇到问题处理
文章目录1、加载类2、开始调试3、读写XMl操作本人已经将代码和笔记上传到个人gitee仓库:https://gitee.com/Aurora811/Using-class.git运行环境:VS 20171、加载类TinyXML2是简单实用的开源的C++XML文件解析库,可以很方便的应用到现有的项目之中。自己对tinyth的读写操作进行了封装XmlFile类。在新建的项目中加载tinyxml2.h、tinyxml2.cpp、XmlFile.h和XmlFile.cpp。2、开始调试遇到问题一原创 2020-09-15 07:48:10 · 1889 阅读 · 0 评论