![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mfc
半雨微凉丶
这个作者很懒,什么都没留下…
展开
-
MFC小程序之批量修改ini配置
用到的主要内容:1、遍历文件夹内所有文件2、选择文件夹对话框3、遍历ini节点并设置值主要代码:CString SelfFilePath(){ //选择文件夹对话框,返回选择的文件夹路径 TCHAR szFolderPath[MAX_PATH] = {0}; CString strFolderPath = _T(""); BROWSEINFO ...原创 2019-11-05 20:55:14 · 456 阅读 · 0 评论 -
对话框伸缩功能(AB伸缩以及ABC伸缩)
1、AB伸缩即把一个对话框分为两部分,可以进行伸缩显示//获得对话框整体范围 GetWindowRect(&pFull); pHalf = pFull; //确定小尺寸对话框范围 CRect rect; m_ctlMorebutton.GetWindowRect(&rect); pHalf.bottom = rect.bottom + 20; pSize = f...原创 2018-09-21 21:33:44 · 711 阅读 · 0 评论 -
MFC获取当前焦点的控件
前言:实际开发中,很多情况下我们需要获取当前焦点的控件ID以便于进行特殊的操作。方法1:GetDlgItem(IDC_EDIT) == Getfocus()//判断焦点是否在某个控件上方法2:(同1)CWnd * pWnd = GetFocus();int nId = pWnd->GetDlgCtrlID(); //获取焦点控件的ID特殊说明:对于...原创 2018-10-28 11:35:46 · 6775 阅读 · 0 评论 -
控件的模拟点击
应用场景:有两个comb控件A、B,选择A的时候B的列表要随时变化,这个增加OnSelChange函数即可。如果在打开界面之前传入一个A里边的值,然后B要随之变化呢?解决方案:首先,要在初始化的时候就要触发CBN_SELCHANGE消息。一开始想的是是使用成员函数SetCursel(),不过设置下标并不能触发这个消息,PASS 然后,考虑到实际中点击选择的时候实际上是给...原创 2018-11-04 13:51:11 · 997 阅读 · 0 评论 -
改变某个单元格的字体颜色和背景色
场景:需要不同的颜色来区分其他数据操作步骤:添加 NM_CUSTOMDRAW 消息响应事件,或者手动添加实现代码如下:NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage) { *...原创 2018-11-08 09:49:28 · 2335 阅读 · 0 评论 -
ListCtrl相关操作
基础操作:1、插入列 CString strLoad; RECT rectList; GetDlgItem( IDC_LIST )->GetClientRect( &rectList ); int nLength = int( rectList.right - rectList.left ); int nColumn = 2; ...原创 2018-11-21 17:32:12 · 1051 阅读 · 2 评论 -
MFC系统自带的悬浮提示消息控件-CToolTipCtrl
简介一、CToolTipCtrl使用方法二、CToolTipCtrl字体背景颜色设置不生效的三、封装的CToolTipCtrl类以及自绘的更强大的ToolTip类详细说明:一、CToolTipCtrl使用1、定义成员变量CToolTipCtrl m_t;2、使用 EnableToolTips(TRUE); m_t.Create(this);...原创 2018-12-07 17:44:49 · 1478 阅读 · 0 评论 -
对话框其他类中获取对话框指针
比如新增加一个类,在类中需要调用对话框中的一个函数或者在普通函数(而非对话框成员函数)中设置对话框控件归根结底,就是需要先获取对话框的指针方法1:(其实两个方法一样,写法不同而已)//直接获取CDlg* pDlg = (CDlg*)theApp.m_pMainWnd; if (NULL != pDlg) pDlg->EnableMainMenu(bT...原创 2018-12-07 18:34:00 · 532 阅读 · 0 评论 -
CPPToolTip矩形区域内设置tip无效的问题
前言:CPPToolTip的使用方法与系统的CToolTipCtrl控件的方法大同小异,大致如下:1、定义变量 : CPPToolTip m_tooltip;2、重载 PreTranslateMessage : m_tooltip.RelayEvent(pMsg);3、使用:m_tooltip.Create( this );m_tooltip.AddTool(GetDlg...原创 2018-12-07 18:44:33 · 341 阅读 · 0 评论 -
MFC单文档以及对话框利用加速键设置快捷键
一、对话框程序1、资源视图添加Accelerator2、Accelerator中添加快捷键,id就是控件的id3、添加成员变量HACCEL m_hac;4、初始化函数OnInitDialog中加载资源m_hac = LoadAccelerators( AfxGetResourceHandle(), MAKEINTRESOURCE( IDR_ACCEL...原创 2018-12-14 16:57:40 · 1017 阅读 · 4 评论 -
MessageBox像printf一样格式化输出
前言:对于习惯了使用printf输出的人来说,MessageBox的输出并不十分尽如人意,如果能像printf那样进行格式化输出就好了~当然,先对字符串format再MessageBox也是可以的~示例代码:#include <windows.h>#include <stdio.h>#define MAX_BUFF 1024int CDECL Me...原创 2018-04-22 23:04:13 · 3356 阅读 · 0 评论 -
MFC小程序之画三角形并填充
效果图:知识点:1、使用MoveTo、LineTo画三角形2、使用Polygon画三角形3、使用CRgn填充示例代码: CClientDC dc( this ); CPen pen( PS_SOLID, 1, RGB( 0, 255, 0 ) ); CPen *oldPen = dc.SelectObject( &...原创 2019-01-24 11:08:32 · 9793 阅读 · 0 评论 -
MFC小程序之复制名字
前言:在windows系统中,对文件和文件夹的复制命名大家应该很熟悉,刚好项目中用到这个点,就做个小程序记录下。大概效果如下:需求:1、对当前选中的内容进行复制,以-副本1、-副本2的格式命名2、如果中间有删除的名字,再次复制的时候优先补上,然后再依次命名知识点:1、List Box的简单用法2、vector的简单用法3、标准库算法 remove 的简单使用...原创 2019-01-22 09:47:29 · 683 阅读 · 0 评论 -
CTime引起的崩溃以及解决方案
1、头文件#include <atltime.h>2、崩溃原因取值范围越界导致,比如 CTime ct(3001,1,1,0,0,0);就会导致崩溃范围如下:nYear1970-3000nMonth1-12nDay1-31nHour0-23nMin0-59nSec0-593、解决方案使用CTime的时候先...原创 2019-04-10 11:29:33 · 1966 阅读 · 0 评论 -
listCtrl用法--虚拟列表
一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1是仅仅在Li...原创 2018-09-06 15:20:45 · 2121 阅读 · 0 评论 -
图片组合框ComboBox
目的:下拉列表以图像的形式显示 实现步骤:1、添加控件:Extended Combo Box,注意不是Combo Box2、资源中导入图片资源(此处导入的3个ICON,数量与加载时的数量保持一致)3、给控件添加变量:CComboBoxEx m_combEx; //注意不是CComboBoxCImageList m_imgList;4、加载图片...原创 2018-08-20 19:44:08 · 1166 阅读 · 2 评论 -
由资源ID确定所属
在大型项目中,由于有许多个工程,而我们又可能不会对没一个工程都十分了解。当我们知道一个资源ID而想要知道它的位置时,就可以用如下的方法。比如一个对话框资源ID为IDC_COMBO1,在文件中搜索找到它在.rc文件中的说明例如:IDD_DLGTRTEST DIALOGEX 0, 0, 70, 205STYLE DS_SETFONT | WS_CHILD | WS_SYSMENUFON原创 2013-06-07 14:14:04 · 495 阅读 · 0 评论 -
窗口关闭流程
依次发生:点击系统菜单产生 close 命令,发送 WM_CLOSE 消息窗口函数一般不处理这个消息,交由 DefWindowProc调用 DestroyWindow (作用是销毁窗口)发送 WM_DESTROY 消息调用 PostQuitMessage发送 WM_QUIT 消息消息队列收到后由 GetMessage 传回0给消息循环结束消息循环从而结束整个程序原创 2013-06-07 16:04:27 · 723 阅读 · 0 评论 -
全屏显示
ModifyStyle(WS_CAPTION, 0,0);SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);原创 2013-08-07 11:32:21 · 658 阅读 · 0 评论 -
MFC读取excel数据
CDatabase database; CString sDriver; CString sItem1,sItem2; CString sDsn; CString sFile="";//filename CString sSql; CFileDialog dlg( TRUE, //true为打开,false为创建 "xls", "FileList",原创 2018-01-19 11:35:51 · 2445 阅读 · 1 评论 -
MFC调试之DMP
对于发布版出现程序崩溃的问题,由于不能现场调试(就算能调试,如果是偶尔的情况也不容易捕获),所以在程序异常时生成调试文件DMP也就变得很有必要。生成DMP文件的代码网上比较多,这里不贴代码了,主要也就是记录下使用过程中遇到的问题。之前使用的时候,自己的测试程序都可以正常定位程序异常的代码,但是实际项目中生成的DMP文件总是提示异常,无法使用,最新又重新了解了下,终于明白问题所在。使用D原创 2018-01-31 08:49:54 · 1336 阅读 · 0 评论 -
AfxIsValidAddress判断指针地址是否有效
好了,同学们,开始上课。 // Allocate a 5 character array, which should have a valid memory address.char* arr = new char[5];// Create a null pointer, which should be an invalid memory address.char* null =...原创 2018-02-03 09:02:47 · 5869 阅读 · 0 评论 -
VS2017操作redis数据库
参考文章:http://blog.csdn.net/fuck487/article/details/61914732注意事项:1、VS2013项目转换2017,编译生成lib文件2、deps\hiredis路径下头文件,主要是hireids.h包含到自己的路径中3、项目设置-》C/C++ -》预处理器,添加一下宏定义WIN32 _DEBUG _LIB _WIN32 _CRT_S...原创 2018-02-22 17:09:32 · 4057 阅读 · 0 评论 -
CStringList判断元素是否存在
简介:CStringList简单实用,以及使用find函数判断是否存在某一元素。提示:#include <afxcoll.h>示例代码:int main(){ CStringList m_strList; m_strList.AddHead("zhaocl"); POSITION pIf = m_strList.Find("zhaocl"); if (pIf == NULL...原创 2018-03-10 17:20:51 · 1257 阅读 · 2 评论 -
MFC对话框资源移植(一个工程复制到另一个工程)
前言:很多时候,我们需要把已经存在的一个对话框资源(或者类似的)复制到另一个工程中(好吧,其实就是懒~)可用方案:1、把两个工程添加到一个项目中,这样你就可以随意的复制粘贴了,当然,这种办法还需要你去布局,改ID什么的2、简单快速高效的办法:在源工程的rc文件中复制你需要的内容到目标工程的rc文件,然后把源工程的resource.h中对应部分复制到目标工程,这样就大功告成了。...原创 2018-07-04 19:28:25 · 5920 阅读 · 0 评论 -
判断CString是否全部为数字
简介:使用CString的的成员函数SpanIncluding进行判断。示例代码:#include <iostream>#inclde <atlstr.h>using namespace std;//by zhaoclint main(){ CString strSouce = "zhaocl777",strLoad; strSo...原创 2018-08-04 12:32:52 · 4191 阅读 · 0 评论 -
MFC单文档程序增加位图按钮
目的:在单文档页面创建一个位图按钮,按下、弹起、选中、禁用四种状态各对应一张图片。具体实现:1、创建单文档程序2、菜单栏增加选项:位图按钮(IDB_BITMAP),并添加对应点击事件(根菜单需要取消popup属性,否则不能设置ID)3、添加4个状态的位图(可以新建,也可以导入)4、在view类头文件中增加CBitmapButton m_bmpBtn; //位图按钮B...原创 2018-08-19 17:48:30 · 781 阅读 · 1 评论 -
MFC对话框增加位图按钮
目的:在对话框中添加一个位图按钮,按下、弹起、选中、禁用四种状态各对应一张图片。具体实现:1、创建对话框程序2、增加显示图片的按钮BMPBTN,按钮名字与ID保持一致,并设置Own Draw 属性为 true3、增加点击按钮(IDC_BTN_BMP),并添加点击事件函数4、添加4个状态的位图(可以新建,也可以导入),设置ID为"BMPBTNU"、"BMPBTND"、"BMP...原创 2018-08-19 18:27:04 · 619 阅读 · 0 评论 -
对话框图标修改
对话框图标更改的方法比较多,这里只介绍简单的三种。1.直接替换res下的ico文件,clean后重新build即可显示新图标2.在resourcevies->icon里把IDR_MAIN删除,再导入自己制作的图标资源,改为IDR_MAIN即可3.程序中修改图标比如动态显示AfxGetApp()->LoadIcon(IDI_ICON1);SetIcon(ico,true);原创 2013-06-06 12:20:40 · 942 阅读 · 0 评论