MFC
随心漂流
C++程序员
展开
-
隐藏和显示电脑下方任务栏
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 · 811 阅读 · 0 评论 -
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 · 1551 阅读 · 0 评论 -
改变对话框的背景色
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 · 852 阅读 · 0 评论 -
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 · 138 阅读 · 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 · 735 阅读 · 1 评论 -
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 · 263 阅读 · 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 · 1765 阅读 · 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 · 468 阅读 · 0 评论 -
MFC--事件控制线程的开启和停止
使用线程过程中,如果while循环(死循环)比较多的话, 建议使用事件来控制线程的开启和终止。因为如果用sleep()轮询的方式来控制线程的停止,sleep是有不可避免的时间差的,不能及时准确地控制线程的开启和停止。而且,如果强行终止线程的话,容易造成内存泄漏的问题。所以,最好的方法,就是设置一个值(事件)作为标志. 如果这个标志发生了变化,就break即可。事件的使用流程:1.创建事件: CEvent* pExitEvent = new CEvent(FALSE, TRUE); 2.重原创 2021-01-09 22:28:14 · 1685 阅读 · 0 评论 -
MFC—分级创建目录及文件
分级创建目录及文件:在根目录下按照日期分类生成目录,在日期目录下再按照分钟生成分钟目录,文件按每分钟生成在不同的文件夹下。#include <io.h> //_access头文件#include <direct.h> //_mkdir()目录头文件void CFindFilesDlg:: TestLog(){ SYSTEMTIME LocalSystemTime; GetLocalTime(&LocalSystemTime); CStri原创 2020-05-27 17:26:53 · 511 阅读 · 0 评论 -
MFC双击按钮不能跳转到代码的解决方法
首先在项目中–【生成】–【清除解决方案】关闭项目删除项目中的【Debug】下所有文件删除项目的.ncb文件打开项目重新编译完全OK原创 2020-04-26 14:26:49 · 4943 阅读 · 0 评论 -
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 · 1427 阅读 · 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 · 199 阅读 · 0 评论 -
VC(VS)常见编译错误
1.IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL builds解决方法:工程(Project)-> 属性(Properties)-> 配置属性(Configuration Properties)-> c/c+±> 代码生成(Code Generation)->运行库(Use run-...原创 2019-11-24 15:13:04 · 1177 阅读 · 0 评论 -
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 · 2565 阅读 · 0 评论 -
获取当前运行程序所在路径(exe/dll)
GetModuleFileName() 函数返回当前进程已加载可执行或DLL文件的完整路径名(以’\0’终止),该模块必须由当前进程地址空间加载。若要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx()函数。DWORD WINAPI GetModuleFileName( _In_opt_ HMODULE hModule, //应用程序或DLL实例句柄,NU...原创 2019-11-27 21:57:01 · 1190 阅读 · 0 评论 -
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 · 11606 阅读 · 0 评论 -
MFC之单选框,复选框用法案例
MFC之单选框,复选框[用法案例]单选框,复选框为常见的功能按键,其使用频率也不低,并且用法非常简单,下面以一个案例介绍一下单选框和复选框的使用。1.新建一个MFC对话框工程,按如下布局添加相关按钮。2.1. 三个单选框默认ID为IDC_RADIO1,IDC_RADIO2和IDC_RADIO3,不更改,使用默认。2.2. 为四个复选框关联4个控件类型变量,具体类型为CButton,变量名...原创 2019-07-20 20:26:58 · 4641 阅读 · 0 评论 -
MFC之线程(开启、挂起、恢复、终止)
MFC之线程(开启、挂起、恢复、终止)MFC中线程有UI线程和工作者线程两种,下面分享一下MFC工作者线程的相关操作,包括线程的开启、挂起、恢复和终止。流程:1.列举用法2.案例展示一:MFC线程的开启CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, //线程的入口函数 LPVOID pParam, ...原创 2019-07-30 22:25:00 · 7720 阅读 · 1 评论 -
MFC控件 --- 旋转控件
MFC控件中的旋转控件用法很简单,但如果没使用过的话那也不会用,所以还是有必要写一下关于它的用法。旋转控件通常都是和编辑框一起搭配使用的,也就是通过旋转控件来控制编辑框内数值的变化情况。把一个编辑框和旋转控件按如图摆放:按Ctrl + D,设置两者的伙伴关系(TAB键顺序): 注意:1.TAB键顺序中旋转控件必须大于编辑框 2.编辑框的顺序值不能为03....原创 2019-08-08 20:07:33 · 2885 阅读 · 0 评论 -
MFC控件 --- 进度条【案例】
打开游戏或者其他一些软件时,时常会看到刚开始时有一个进度条在加载,有点酷炫的感觉。对于MFC进度条的使用,下面用一个案例介绍一下。案例:进度条单步加载和自动连续加载步骤:1.按下图在对话框中添加一个进度条,一个编辑框,和3个按钮,并为进度条添加一个控件变量进度条变量:m_Progress2.在初始化函数中对进度条进行初始化,代码如下:BOOL CSpinDlg::OnInitDia...原创 2019-08-08 22:26:23 · 2574 阅读 · 3 评论 -
动态链接库DLL的制作(附加载演示)
之前分享了动态链接库DLL的加载,此次分享一下DLL的制作。本案例的演示其实完成了对接口的二次封装,对于某些工作,特别是机械控制类的,往往公司采购的设备种类比较多,拥有的开发文档也很多,但同一个公司如果不对这些文档的使用规定统一的调用方法,那么每用一种设备程序就有一种设备的调用方法,不方便程序的统一管理和维护。所以对这些程序提供统一的封装方法和调用方式非常重要,那么DLL模块化的思想就得到了应用。...原创 2019-08-06 21:20:28 · 413 阅读 · 0 评论 -
MFC之String Table---快速整体管理消息
MFC资源视图里面提供了一个String Table目录,里面是一张字串表,但是一般很少人会使用到它,但是既然软件里都提供了,必定有它的作用所在,其实对于小项目来说作用不大,但是当你的项目越来越大,代码越来越多的时候,那么String Table这张表的作用就体现出来了。使用String Table的情况:代码量比较多,提示信息多,使用String Table可以节省时间,查找信息更快捷。管...原创 2019-08-13 20:24:37 · 4259 阅读 · 0 评论 -
MFC----禁止同时运行多个实例
Windows是多进程的操作系统,由于多进程的使用,有些应用程序可以有“多开”的现象,即同一个应用程序的多次运行产生了多个运行实例。但有时候为了保证应用程序的安全运行,要求该程序只能运行一个实例,那么我们就要实现限制应用程序“多开”的功能,保证任何情况下该应用程序只有一个实例存在。那么如何保证应用程序任何情况下只有一个实例存在?可以通过创建互斥事件来进行实现。在创建应用程序的时候,在xxxA...原创 2019-08-09 17:31:39 · 1408 阅读 · 0 评论 -
MFC---定时器的使用【定时器并行】
定时器的使用非常广泛:体育课上,计算田径跑步用时;军事上,定时炸弹,定时雷管。生活上,定时器控制开关或工作时间。下面先说下MFC定时器的具体使用方法,然后再演示一个定时器的具体案例。一: 定时器的使用:1.定时器的开启:使用CWnd类的成员函数SetTimer(): SetTimer ( UINT nIDEvent, //定时器ID,用来确定消息是那个定时器发送的...原创 2019-08-11 15:46:06 · 1841 阅读 · 0 评论 -
MFC之图片控件(PictrueControl)--- 位图的静态加载和动态加载方式
MFC中图片控件(PictrueControl)的加载方式有两种:静态加载、动态加载下面分别演示一下图片控件的2种加载方式具体过程静态加载1.新建一个MFC对话框工程,名称自定义即可。2. 准备一张Bitmap(bmp)图片,没有的话可以用其他格式的图片通过格式工厂转换。3. 视图切换到资源视图,在工程目录上右击,选择插入:将会弹出如下一个对话框:选中Bitmap后点击引入,选...原创 2019-08-15 22:28:05 · 4947 阅读 · 0 评论 -
使用VC6.0缺少Dll或头文件解决方法
1.缺少dll如:解决方法:1.从网上下载缺少的相应dll放到system目录或者工程debug目录下(.exe同目录)。2.把“工程–>设置–>常规”中Microsoft基础类(M)下拉框选择“使用MFC作为静态链接库”。2.致命错误RC1015:无法打开包含文件’afxres.h’出错原因:环境默认目录设置错误,导致无法找到对应的头文件。解决方法:vc6中打开:“...原创 2019-09-03 09:41:54 · 4466 阅读 · 0 评论 -
MFC之列表控件ListCtrl
MFC列表控件ListCtrl如图:列表控件ListCtrl样式属性(风格)有:Icon大图标,SmallIcon小图标、List列表、Report报告 ,但今天只谈Report报告样式:一:基本操作1.(1)InsertItem --- 插入一个主项(行) (2)DeleteItem --- 删除一个主项 (行) (3)InsertColumn --- 插入一个列 (4)Del...原创 2019-09-13 11:55:53 · 7918 阅读 · 1 评论 -
MFC--按键、按钮按下和弹起事件检测
MFC按钮按下事件很容易实现,为一个按钮直接添加点击事件即可,但是有时需要检测按钮的抬起,即按钮的按下和抬起单独实现各自的功能时,就需要对两种状态单独检测。下面把MFC按钮和键盘的按下和抬起一起实现。方法是重写**PreTranslateMessage(MSG* pMsg)*函数:步骤:1.新建一个对话框MFC工程,名称自主定义即可2.添加一个按钮,ID默认为IDC_BUTTON1,不需更...原创 2019-09-24 19:59:24 · 11838 阅读 · 0 评论 -
MFC--- 多页面切换
使用CPropertySheet和CPropertyPage实现MFC多个界面的切换,即多个对话框的相互切换。原创 2019-09-25 16:53:58 · 3888 阅读 · 1 评论 -
MFC调试及运行状态下打印输出信息
使用C++进行MFC程序调试时,有时我们需要查看某个变量的实时值,或者需要查看程序此时的运行状态。那么就需要输出某些调试信息,方便跟踪变量及了解程序的与运行状态。但是直接使用printf是无法输出信息的,下面介绍一下这两种下如何输出调试信息。1.MFC调试(F5)状态下输出调试信息:直接使用TRACE()例如:设置断点,直接按下[F5],单步运行,同时观察调试窗口的输出(可以先把窗口清空...原创 2019-07-29 23:39:30 · 9374 阅读 · 2 评论