自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随心漂流的博客

所学非所得,唯用而得之。

  • 博客(67)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 MFC对话框窗口的折叠和展开

当某些功能不经常使用或者只有获得了某种权限密码后方可使用时可以使用这种折叠与展开方式。2.点击折叠按钮后:按钮下方的部分折叠起来。3.点击展开按钮:恢复到初始的展开状态。

2024-02-28 15:43:17 256

原创 隐藏和显示电脑下方任务栏

1.隐藏void CMyDlg::Onhide() { CWnd *taskBar; taskBar=FindWindow("Shell_TrayWnd",NULL);//获得任务栏窗口对象指针 taskBar->GetWindowRect(&taskBarRECT);//保存原任务栏窗口的大小 taskBar->SetWindowPos(NULL,0,600,0,0,SWP_HIDEWINDOW);//改变大小}2.显示void CMyDlg::Onsho

2021-12-01 13:16:28 804

原创 MFC窗口置顶

1.置顶::SetWindowPos ( AfxGetMainWnd ()->m_hWnd ,HWND_TOPMOST, -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE); //或 //SetWindowPos ( &wndTopMost , -1, -1, -1, -1, SWP_NOMOVE| SWP_NOSIZE);2.取消置顶SetWindowPos ( &wndNoTopMost , -1, -1, -1, -1, SWP_NOM

2021-12-01 13:03:18 1550

原创 改变对话框的背景色

1.头文件里定义一个画刷:CBrush m_brushColor;2.在OnInitDialog()初始化时创建画刷,并设置实际的颜色:m_brushColor.CreateSolidBrush ( RGB ( 100, 100, 255 ));//初始化颜色画刷3.通过类向导添加afx_msg HBRUSH OnCtlColor()函数,并返回颜色刷子:HBRUSH CxxxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { H

2021-12-01 12:54:48 848

原创 C++函数模板(Template Function)

模板(Template)指C++程序设计语言中采用类型作为参数的程序设计,支持通用程序设计。下面以不使用函数模板,和使用函数模板来实现同一功能的示例:例子:实现计算一个数的幂次方的函数power,接受正幂次方数,如果是负幂次方数,就让结果等于0.1.不使用模板如果不使用函数模板,对于需要实现的功能相同,但参数的数据类型却不同的情况,则需要定义多个不同数据类型的函数://对于实现 整数类型 的幂次方函数int power(int base,int exponent){ int result =

2021-11-30 14:19:02 1035 1

原创 MFC单文档中创建控件

MFC单文档中创建控件的步奏: 1.在xxView头文件中声明要添加的控件类型,如按钮 CButton m_button; 2.xxView.cpp中通过宏的形式定义控件的ID,如#define IDB_BTN 130 3.在OnCreate函数中通过Create、ShowWindow函数来在界面中创建控件例:1.CTestView.h中添加控件声明:public: CButton m_button; CStatic m_static;2.CTestView.cpp中添加宏定

2021-03-29 11:07:52 2050 2

原创 MFC单文档实现拆分窗口

拆分窗口使用CSplitterWnd来实现,实现步奏如下 第一步:在父框架中创建一个CSplitterWnd成员变量 第二步:在资源中插入一个对话框,Style设置为Child(必须) ,Border设置为None CSplitterWnd m_wndSplitter; 第三步:重载父框架的CFrameWnd::OnCreateClient成员函数,并在该函数中调用类CSplitterWnd的Create或CreateStatic成员函数,配合CreateView来创建视图例:CMainF

2021-03-29 09:53:45 589

原创 设计模式之单例模式

单例模式:单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点,使整个系统中只有唯一的一个对象实例。应用:常用于管理资源,如日志、线程池。实现要点: 在类中,要构造一个实例,就必须调用类的构造函数,并且为了保证全局只有一个实例,需防止在外部调用类的构造函数而构造实例, 需要将构造函数的访问权限标记为private,同时阻止拷贝创建对象时赋值时拷贝对象,因此也将它们声明并权限标记为private。 另外,需提供一个全局访问点,所以要在类中定义一个static函数,返回在类内部唯一构造的

2021-03-17 13:50:00 68

原创 MFC 封装删除目录的函数

void CBubbleMachineDlg::DeleteDirectory(CString strDir){ TCHAR szFind[MAX_PATH] = { _T("\0") }; lstrcpyn(szFind, strDir, MAX_PATH); lstrcat(szFind, _T("\\*.*")); //指明通配符,读取所有文件和目录 CFileFind finder; BOOL bfind = finder.FindFile(szFind, 0); while

2021-03-05 09:24:09 135 1

原创 MFC编写界面dll,加载并显示dll中的UI

1、创建一个“MFC dll”工程,确定。选择“使用共享MFC DLL的规则DLL”,点击“完成”。2、再创建的dll工程中插入一个对话框Dialog资源。3、在该对话框中添加一新类,如:UiDlg,基类为CDialog。4、在dll工程的.cpp文件最顶部处添加 #include “UiDlg.h”,并添加一个接口函数:extern "C" __declspec(dllexport) void ShowUIDlg(){ AFX_MANAGE_STATE(AfxGetStaticMo

2021-03-03 09:35:43 730 1

原创 C++ 16进制转成byte

#include <iostream>using namespace std;#define byte unsigned charbyte hex2byte(char hexstr[]);int main(){ char hex[3] = "67"; cout << int(hex2byte(hex));}byte hex2byte(char hexstr[]){ byte h = hexstr[0]; byte l = hexst

2021-02-25 17:04:21 1232

原创 CSV文件读写

写void CcsvWriteDlg::WriteCsv(){ CString strFilePath = _T("D:\\DataCsv.csv"); CFileFind finder; //判断文件是否存在,存在返回true,不存在返回false BOOL bWorking = (bool)finder.FindFile(strFilePath); if (!bWorking) { //不存在,创建 if (CStdioFile *fsp = new CStdioFile(st

2021-02-23 12:58:09 258 1

原创 MFC判断文件是否存在,不存在则创建+CSV文件操作

MFC判断文件是否存在,不存在则创建+CSV文件操作 CString strFileName; SYSTEMTIME sysLocaltime; GetLocalTime(&sysLocaltime); strFileName.Format(_T("D:\\TestData\\%04i-%02i-%02i"), sysLocaltime.wYear , sysLocaltime.wMonth, sysLocaltime.wDay); //创建目录 SHCreateDirectoryE

2021-02-22 14:19:14 1741 3

原创 MFC中IP控件常规操作

MFC中IP控件的使用void CMFC_IPControlDlg::OnIPAddressCtrl(){ /*获取计算机名和本机IP地址*/ WORD wVersionRequested; WSADATA wsaData; char name[255];//本机名 CString ip;//本机IP PHOSTENT hostinfo; wVersionRequested = MAKEWORD(2, 0); if (WSAStartup(wVersionRequested, &am

2021-02-04 15:27:20 465

原创 MFC--事件控制线程的开启和停止

使用线程过程中,如果while循环(死循环)比较多的话, 建议使用事件来控制线程的开启和终止。因为如果用sleep()轮询的方式来控制线程的停止,sleep是有不可避免的时间差的,不能及时准确地控制线程的开启和停止。而且,如果强行终止线程的话,容易造成内存泄漏的问题。所以,最好的方法,就是设置一个值(事件)作为标志. 如果这个标志发生了变化,就break即可。事件的使用流程:1.创建事件: CEvent* pExitEvent = new CEvent(FALSE, TRUE); 2.重

2021-01-09 22:28:14 1668

原创 WindowsAPI--获取系统目录信息GetSystemDirectory()

WindowsAPI–获取系统目录信息GetSystemDirectory( szSystemDir, MAX_PATH );该函数取得Windows系统目录(System目录)的完整路径名。该目录包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作。案例程序:功能:使用WindowsAPI函数获取系统目录信息,并写入到文件中#include<Windows.h&

2020-10-31 23:56:03 2661

原创 WindowsAPI --Windows数据结构(GetFileAttributesEx())

WindowsAPI --Windows数据结构GetFileAttributesEx() GetFileAttributesEx()获取指定文件或目录的文件系统的属性信息。如果要实现交互式操作,可以使用GetFileAttributesTransacted 函数。 参数: lpFileName[in]:文件或目录的名字,对于ANSI版本,名字不能大于MAX_PATH(260)。 返回值: 如果成功,返回值包含文件或目录的属性。如果失败,返回值是INVALID_FILE_AT

2020-10-31 23:44:56 1289

原创 WindowsAPI--CreateFile、ReadFile

WindowsAPI--CreateFile、ReadFileHANDLE CreateFile(BOOL ReadFile(BOOL WriteFile(案例:读取已经存在文件的内容文件内容:运行结果:结语:由于编码问题,有些字符(包括一些空格等)不能正常显示,需要修改文件的编码格式。如有更好的方法望各位指点明津!谢谢!HANDLE CreateFile( LPCTSTR,lpFileName, //指向文件名的指针

2020-10-31 23:02:09 434

原创 TCP 和 UDP网络通讯技术

TCP和UDP基本编程步骤:TCP: 服务器端:   1、创建一个socket,用函数socket();   2、设置socket属性,用函数setsockopt(); (可选)   3、绑定IP地址、端口等信息到socket上,用函数bind();   4、开启监听,用函数listen();   5、接收客户端上来的连接,用函数accept();   6、收发数据,用函数send()和recv(),或者read()和write();   7、关闭网络连接;   8、关闭监听; 客户

2020-06-08 11:55:35 598

原创 MFC显示OpenCv类型的Mat图片

void CXXXDlg::DrawOpenCvMat(Mat& img, UINT nID){ Mat imgTmp; CRect rect; GetDlgItem(nID)->GetClientRect(&rect); // 获取控件大小 int nWidth = rect.Width(); int nHeight = rect.Height(); resize(img, imgTmp, Size(nWidth, nHeight));// 缩放

2020-06-05 15:49:03 394

原创 OpenCV计算指定区域的黑白像素个数

过程模拟模板匹配过程,可修改成模板匹配方式:过程:读取一张图片->从图片中选取感兴趣区域(ROI),并保存->把保存下来的区域图片(ROI)读取出来->预处理后计算黑白像素的个数#include "stdafx.h"#include "opencv2/highgui/highgui.hpp"#include "cv.h"#include <opencv2/imgproc/imgproc.hpp>#include <iostream>using nam

2020-06-05 15:22:46 7826 4

原创 OpenCV模板匹配,匹配同一幅图中的多个目标

#include "stdafx.h"#include "opencv2/highgui/highgui.hpp"#include "cv.h"#include "highgui.h"#include <vector>#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <math.h>#include <iostream>#i

2020-06-05 13:11:40 4829 1

原创 OPenCV框选感兴趣区域ROI,按ESC退出时画框并输出坐标

/*OPenCV框选感兴趣区域ROI,按ESC退出时画框并输出坐标*/#include "stdafx.h" #include "opencv2/highgui/highgui.hpp" #include < iostream >#include "cv.h"#include "highgui.h"#include <vector>#include <opencv2/core/core.hpp>#include <opencv2/imgproc

2020-06-01 14:30:18 799 1

原创 MFC—分级创建目录及文件

分级创建目录及文件:在根目录下按照日期分类生成目录,在日期目录下再按照分钟生成分钟目录,文件按每分钟生成在不同的文件夹下。#include <io.h> //_access头文件#include <direct.h> //_mkdir()目录头文件void CFindFilesDlg:: TestLog(){ SYSTEMTIME LocalSystemTime; GetLocalTime(&LocalSystemTime); CStri

2020-05-27 17:26:53 504

原创 C++ STL之向量vector

vector成员函数: push_back( )在向量的末尾插入值,必要时会扩展向量的大小 size( )显示向量的大小 begin( )返回一个指向向量开头的迭代器 end( )返回一个指向向量末尾的迭代器 例:#include <iostream>#include <vector>using namespace std; int main(){ // 创建一个向量存储 int vector<int> vec; int

2020-05-26 14:35:13 284

原创 C++深入之内联函数

C++内联函数对常规函数的调用对应着跳转到标记函数起点的内存单元,然后执行函数代码,执行完毕后跳回到地址被保存的命令处。来回跳跃并记录跳跃位置是需要一定开销的。C++提供的内联函数与常规函数不同,内联函数在编译阶段就将函数代码与调用者内联起来了,也就是使用函数代码替换了函数的调用,从而实现较快的执行速度,但是代价是需要额外的存储空间。使用方式为在函数声明前加上关键字inline;在函数定以前加上关键字inline。什么时候考虑使用内联函数:(内联函数不需要出入栈,效率上会好点,但编译后的

2020-05-26 11:23:29 203

原创 CString几个常用方法

常用:CString Left(int nCount)const; //从左边1开始获取前 nCount个字符CString Mid(int nFirst)const; //从左边第 nCount+1个字符开始,获取后面所有的字符CString Mid(int nFirst, int nCount)const; //从左边第 nFirst+1 个字符开始,获取后面nCount个字符CString Right(int nCount)const; //从右边1开始获取从右向左前 nCount个字符v

2020-05-25 10:29:37 810

原创 取得字符串长度的几种方法及区别

sizeof :取得字符串的字节长度,包含 '/0'。strlen:取得多字节字符串中字符长度,不包含 '/0'。wcslen:取得宽字节字符串中字符长度,不包含 '/0'。tcslen:取得宽字节/多字节字符串中字符长度,不包含 '/0'。如:WCHAR wcsStr[] = L"ABCD";char chrStr[] = "ABCD";TCHAR tcsStr[] = _T("ABCD");//宽字符int wcslen01 = wcslen(wcsStr); //4 int w

2020-05-09 10:38:18 938

原创 关于LPSTR、LPCSTR、LPTSTR和LPCTSTR

LPSTR: 指向一个字符串的32位指针,每个字符占1个字节。LPCSTR:指向一个常量字符串的32位指针,每个字符占1个字节。LPTSTR:指向一个字符串的32位指针,每个字符可能占1个字节或2个字节。此字串可移植到Unicode和DBCSLPCTSTR:指向一个常量字符串的32位指针,每个字符可能占1个字节或2个字节。此字串可移植到Unicode 和DBCSANSI(即MBCS):多字节字符集,不定长表示世界文字的编码方式。ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用

2020-05-09 10:17:14 2259

原创 C++不能往TXT、XML文件写入中文的解决方法

以下CStdioFile无法向文件(txt、xml)中写入中文,或写入的是乱码:CStdioFile file;file.Open(…);file.WriteString(_T(“abc你好”));//只能写入abc解决办法:使用setlocale语句设定区域#include <locale>//头文件CStdioFile file;file.Open(…);char...

2020-05-07 09:33:40 1165

原创 VS2015Socket警告warming:C4996 'inet_addr': Use inet_pton() or InetPton() instead or define _WIN...

原:sockAddr.sin_addr.s_addr = inet_addr(“192.168.1.6”);报警:Error C4996 ‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings解...

2020-04-26 16:58:21 326

原创 MFC双击按钮不能跳转到代码的解决方法

首先在项目中–【生成】–【清除解决方案】关闭项目删除项目中的【Debug】下所有文件删除项目的.ncb文件打开项目重新编译完全OK

2020-04-26 14:26:49 4848

原创 Assert功能简介

断言assert的作用断言就是对某种假设条件进行检查。断言在 C 语言中被定义为宏的形式(assert(expression)),而不是函数,在<assert.h>文件中。assert 通过检查表达式 expression 的值来决定是否需要终止程序的执行。即,如果表达式 expression 的值为假(即为 0),那么它将首先向标准错误流 stderr 打印一条出错信息,然后再通过...

2020-04-09 17:28:25 336

原创 vc6.0 中报错#error : "eh.h is only for C++!"

vc6.0 中报错#error : “eh.h is only for C++!”原因:编译器是依据文件扩展名来判断是c还是c++语言的,而vc6.0在处理.c 文件是按C 语言编译的。报这个错时说明了程序中要求用到eh.h文件, 而eh.h文件是C++的文件,C中使用时需要c++支持。解决方法:把.c文件扩展名改成.cpp即可。...

2020-04-09 17:16:24 4597

原创 C++内存机制中内存泄露、内存溢出、内存越界和内存泄漏原因分析

在用C++做底层驱动时,经常会遇到内存不足的警告,往往是因为内存出现溢出、泄露或者越界等原因。内存溢出(out of memory) 是指程序在申请内存时,没有足够的内存空间供其使用。内存泄漏(memory leak) 是指程序申请的内存,用完后没有释放已申请的内存空间,占用有用内存。二者关系:内存泄漏的堆积最终会导致内存溢出内存溢出,就是你要的内存空间超过了系统实际分配给你...

2020-04-03 17:10:36 1978

原创 C++操作系统剪切板

剪切: if (OpenClipboard())//打开剪贴板 { CString str; HANDLE hClip; char* pBuf; EmptyClipboard();//清空剪贴板 GetDlgItemText(IDC_EDIT_SEND,str);//获取IDC_EDIT_SEND中的数据 //写入数据 hClip = GlobalAlloc(G...

2019-12-24 21:22:40 1414 4

原创 文件的复制、剪切、删除

#include <Windows.h>#include <stdio.h>//复制void CFileCopyClipDeleteDlg::OnBtnCopy() { DWORD getlastError; if (!CopyFileA("E:\\TestFile.txt", "E:\\Test\\TestFile.txt", false))//把1.txt...

2019-12-24 20:41:05 197

原创 MFC--文件对话框(选择路径和文件)

1.两个EDIT各自都关联一个CString变量2.选择文件夹路径Browse:void CFileDialogDlg::OnBnClickedBtnSelectPath(){ //获取目录路径 TCHAR szPath[MAX_PATH] = { 0 }; LPITEMIDLIST pitem; BROWSEINFO info; ::ZeroMemory(&...

2019-12-23 21:13:40 2477

原创 获取当前运行程序所在路径(exe/dll)

GetModuleFileName() 函数返回当前进程已加载可执行或DLL文件的完整路径名(以’\0’终止),该模块必须由当前进程地址空间加载。若要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx()函数。DWORD WINAPI GetModuleFileName( _In_opt_ HMODULE hModule, //应用程序或DLL实例句柄,NU...

2019-11-27 21:57:01 1184

原创 MFC---获取combox内容的3种方法

//方法1:CString str;GetDlgItem(IDC_COMBO_NETCARD)->GetWindowText(str); //获得组合框中的选中内容int nChID = atoi(str);TRACE("%s", str);TRACE("%d", nChID);//方法2:int index = m_NetCard.GetCurSel();//m_NetC...

2019-11-27 21:03:37 11377

屏幕分辨率自适应.zip

MFC实现屏幕分辨率自适应

2021-01-22

TCP-IP.zip

基于C++和VS2010编写的TCP/IP网络通讯例子,实现了网络连接、发送信息、接收信息的功能,可连接多个客户端,在服务端上可以看到已经连接上的客户端个数,代码中有详细的注释,便于快速了解和修改。下载后用VS打开,先清除解决方案再重新编译即可。

2020-04-16

MyPrintDLL.zip

该文档是动态链接库的制作和加载的完整工程,介绍了dll的具体制作和使用过程。

2019-08-06

shortcut.zip

计算机快捷助手:汇集了大部分Dos操作系统的命令,一方面方便使用计算机,另一方面可供dos初学者学习使用。

2019-07-30

Thread.zip

MFC线程demo:模拟奶茶店的信息系统(下单,测控等),包含了MFC工作线程的启动,挂起,恢复和终止的用法和操作。

2019-07-30

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除