![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC
文章平均质量分 54
动感小麦兜
这个作者很懒,什么都没留下…
展开
-
MFC 报错Buffer too small
该报错只有在非Debug下才会复现,在正常Debug时不会出现。开始排查时以为是Sprintf的问题,后来屏蔽后发现仍出现该问题,后来排查到CHAR*使用了Format转换为CString,删除Format后正常。CHAR *A;CString B;B.Format("%s",A);//错误,会报错B = A;//正确...原创 2020-08-08 00:58:56 · 2113 阅读 · 0 评论 -
MFC 图标美化杂记
1.bmp图片在PS中无法去除背景色更改为透明色,即使去除了保存后还是背景白色,正确的做法是保存为PNG格式,然后放在图层中,用魔棒选中白色去掉,按Delete删除。2.关于渐变色:PS中,选择-->色彩范围,吸管选中要改变的颜色,或使用魔棒工具,选择要改变的颜色。找到渐变工具,工具栏选择期望的渐变色,鼠标在图片上拖动,即可看到渐变效果。3.制作ICO图标:使用Sib Icon St...原创 2020-04-19 13:54:32 · 408 阅读 · 0 评论 -
MFC ListCtrl使用虚拟列表+CheckBox的解决方法
使用mfc久了,发现虚拟列表真的很好用,尤其是刷新大量数据时或对时间要求比较严格的地方时,但在使用CheckBox时,虚拟列表和ListCtrl默认一行只能在行首加入CheckBox,无法在其他列加入。遇到这种情况,网上的解决方案一般分两种:1.使用自绘,自己绘制CheckBox。2.使用一些开源的代码,如XListCtrl等。3.在虚拟列表中下加入图片(图片为勾选和不勾选的两种ico图片...原创 2019-12-15 17:00:20 · 1782 阅读 · 0 评论 -
MFC检测USB设备热插拔
在Dlg.cpp中添加头文件#include <Dbt.h> //刷新设备添加或移除添加响应消息ON_WM_DEVICECHANGE() //设备添加或移除通知添加响应消息函数BOOL CXXXDlg::OnDeviceChange(UINT nEventType,DWORD dwData) { switch (nEventType) { case DBT_DEV...原创 2018-06-15 20:51:59 · 2107 阅读 · 0 评论 -
MFC更新控件界面&防闪烁--发送消息
/C++// 自定义消息号#define WM_MY_MESSAGE WM_USER+1class CMyDlg : public CDialog{...public: // 自定义消息响应函数 afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); ...private: // 假设这个函数启动线程 void ...原创 2018-06-16 23:04:01 · 1094 阅读 · 0 评论 -
MFC编辑框&amp;最多显示30000字符的解决方法
1.(转)问题:将将串口收到的数据显示到Edit control控件中时,发现最多只能显示30000个字符,超过字符则不显示解决: 默认情况下Edit control控件最多显示30000个字符,如果要修改这个最大显示个数值则需要初始化的时候讲这个值修改,最大值为库定义的UINT_MAX(即0xFFFFFFFF)。BOOL appDlg::OnInitDialog()//在这个函数中...原创 2018-06-18 10:23:12 · 3297 阅读 · 0 评论 -
MFC折叠一块区域
在Dlg.h里定义:CRect m_rectLarge; //大区域CRect m_rectSmall; //小区域在Dlg.cpp初始化处:GetWindowRect(&m_rectLarge); //全部区域GetDlgItem(IDC_STATIC_Segment)->GetWindowRect(&m_rectSmall);// IDC_STATIC_Se...原创 2018-06-10 21:43:19 · 1534 阅读 · 0 评论 -
动态调用动态链接库(dll)&多次调用库函数报错的解决方法
动态链接库的调用方式有两种,一种是静态调用,一种是动态调用。静态调用dll比较简单,将.dll,.h,.lib放在工程下,在工程里使用下列格式包含,就可以直接使用了。#pragma comment(lib,"XXX") 而动态调用dll就有些复杂了,但动态调用仅需要dll文件就可以,不需要包含上述lib。调用之前需要构造一个函数类型,比如我需要调用VCI_StartC...原创 2018-10-15 15:14:07 · 3406 阅读 · 0 评论 -
MFC 中使用unordered_map
近期遇到一个问题,如何高效率的对比软件接收到的数据和数据库里的数据,传统方式下用c语言的话,可以使用for和if进行遍历,但效率低下。通过查找资料,发现可以通过map,hash_map,unordered_map来实现。其中map效率比较低,hash_map未列入c++标准,最后只剩下unordered_map。 先看unordered_map的实现。#include <u...原创 2019-01-02 16:20:19 · 777 阅读 · 0 评论 -
MFC ListCtrl 虚拟列表闪烁的问题 && 改变ListCtrl颜色
当使用ListCtrl显示大量数据或频繁进行显示时,传统的显示方法不仅显示速度慢,而且会出现闪烁的问题,为了提高数据的时效性,选择使用了虚拟列表。 首先,设置Listctrl控件属性,将OwnerData属性修改为TRUE;然后为控件关联一个变量m_List。 初始化CRect rect; int Total_num=4; m_List.ModifyStyl...原创 2019-08-17 16:44:38 · 1826 阅读 · 1 评论 -
MFC ON_WM_DEVICECHANGE消息响应异常,无法读取usb插入硬件的名称信息
最近碰到一个怪异的问题,其实问题的起源在于最近使用上位机时,发现插入USB设备后,软件无法自动打开该USB设备,但这一块的程序之前已经实现了,并正常跑了。进到软件中,看到可以响应ON_WM_DEVICECHANGE()消息,但在读取dbd->dbcc_name时却返回为空,或“/”。于是新建了一个工程,结果可以正常读取dbd->dbcc_name。于是一点一点调试,最终发现是因为有几个...原创 2019-09-02 23:39:16 · 934 阅读 · 0 评论 -
MFC 把不同工程的对话框进行复制
开发项目,不能每次都重建新项目,从头来做。利用之前开发的项目,将其对话框复制到新工程,可以提高很大的效率,不用再重新排列对话框资源了。把原来的工程插入到当前工程中(文件->添加项目->现有项目),然后拷贝原来的对话框,再到当前工程对话框组,粘贴!然后把对应的h和cpp文件复制过去即可,复制cpp和h时需要将文件夹的文件复制到当前项目下并进行添加。添加到工程时可以直接在VS上复制下方的旧...原创 2018-06-22 21:24:29 · 1148 阅读 · 0 评论 -
MFC TabControl的使用
在主对话框中添加Tab Control控件,如下图所示,右键控件添加ctrl类变量m_tab在资源视图下增加两个对话框,分别修改其属性,将Border改为None,Style改为child在主对话框CXXXDlg.h中包含上述两个对话框的头文件,并在主对话框的类中添加:CDIALOG1 m_page1; CDIALOG2 m_page2; 在主对话框初始化代码中添...原创 2018-06-22 21:03:27 · 10291 阅读 · 2 评论 -
MFC/VC中当鼠标停靠在按钮等控件上时出现文字提示功能
在VC中,常常为一些图片按钮添加一些功能提示。下面讲解实现过程,大部分代码是网上的,但已经过测试,可以直接使用~该功能的实现主要是用CToolTipCtrl类。该类在VC msdn中有详细说明。首先在对话框的头文件中加入初始化语句:public:下,加入:CToolTipCtrl m_stat;然后在初始化对话框函数中加入:(注:我开始在OnCreate函数中加的这转载 2016-10-11 09:03:54 · 5954 阅读 · 1 评论 -
MFC中SetTimer定时不准确?试试用多媒体定时器吧
最近做一个项目,需要用到1ms的定时器中断,但用SetTimer总是觉得不准确,后来用程序一测试,还真是不准,定时时间设为1ms,但实际大约没10ms触发一次中断,至于如何测试的后面有代码。网上很多人也说了SetTimer定时不准确的问题,后来用多媒体定时器,就比较准了。多媒体定时器使用方法:添加头文件#include "mmsystem.h" //head file#pragma原创 2017-08-21 08:50:22 · 2563 阅读 · 0 评论 -
Visual Studio 实用扩展推荐
Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源)。在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率。 C# outline Visual Studio 默认的大纲方案只允许在方法级别及以上进行代码的折叠,无法对一个if、while的区块进行折叠,而这款工具则正好弥补了这个问题。转载 2017-12-01 17:16:22 · 2694 阅读 · 0 评论 -
VS创建的exe文件在xp及win10等版本运行错误的问题&mfc临时目录设置
最近使用vs编了一个小程序,在xp运行时提示“不是有效的win32应用程序”,修改方法如下:1.工程属性->链接器->系统->子系统,选择控制台或窗口,在下面一行“所需的最低版本”里填入5.012.常规->MFC的使用,选择“在静态库中使用MFC”3.C/C++ ->代码生成->运行库,选择“多线程/MT”若编译后出现LIBCMT.lib(...原创 2017-11-11 19:48:52 · 1159 阅读 · 0 评论 -
MFC 鼠标悬停事件,提示信息
MFC里这个类叫做CToolTipCtrl,具体用法很简单。1.在类头文件中声明CToolTipCtrl的类对象m_stat。CToolTipCtrl m_stat;//鼠标提示信息2.在初始化函数OnInitDialog()中设置m_stat。//按钮等鼠标悬浮提示初始化 m_stat.Create(this); m_stat.AddTool( GetD原创 2018-01-21 20:17:24 · 3377 阅读 · 1 评论 -
MFC添加属性页杂记
为了能实现在同一个页面实现多个页面的切换效果。CPropertySheet要与CPropertyPage一起使用。首先 新建一个MFC工程--MFC AppWizard(exe), 取名Pagesheet, 选择Dialog based, 然后Finish.2. 在对话框资源中插入两个对话框IDD_DIALOG1、IDD_DIALOG2,作为两个子页原创 2017-02-21 17:26:02 · 1193 阅读 · 0 评论 -
给MFC程序添加通知区域图标
给MFC程序添加通知区域图标 现在起来越多的程序都有一个通知区域图标(托盘图标),既美观又方便。但是MFC不像C#一样提供NotifyIcon控件,要实现通知区域图标,就要自己做一个CTrayIcon类或者使用NOTIFYICONDATA结构。 MSDN中关于NOTIFYICONDATA的介绍: http://msdn.microsoft.com/en-us/...转载 2018-03-19 21:28:00 · 521 阅读 · 0 评论 -
MFC菜单栏及工具栏实现
MFC菜单栏实现: 在资源视图中,右键工程名.rc-->添加资源,选择Menu。对Menu设置ID,并对Menu菜单进行设置(即添加菜单栏的名字) 在C***Dlg.h中,添加CMenu m_Menu; 在C***Dlg.c的初始化中,添加m_Menu.LoadMenu(IDR_MENU1); // IDR_MENU1 SetMenu(&m_Menu);MFC工...原创 2018-04-14 12:32:21 · 7029 阅读 · 0 评论 -
MFC对话框基础知识杂记
1.刚新建的对话框的大小是可以通过鼠标拖动改变大小的,若不需要改变大小,可到资源视图下的对话框栏,选中对话框-->属性,找到Border一栏,将Resizing改为Dialog Frame。若在新建时没有勾选最小化最大化框,也可以在这个属性页里进行添加。...原创 2018-04-16 10:33:09 · 252 阅读 · 0 评论 -
VS2012中MFC的对话框界面风格问题
以前在XP写的程序,现在系统换成了WIN7,现在对话框在编辑和预览的时候显示都如图一所示,可实际编译生成之后的显示却如图二所示,是什么问题?如何设置两者的显示风格使其保持一致?------------------------------------------------------------------------------------------------------猫腻在stdafx....转载 2018-04-27 10:49:49 · 2042 阅读 · 0 评论 -
MFC操作ini文件方法
在我们的程序设计中经常需要对一些参数进行配置,配置好后还要在下一次启动仍然有效,那么一个有效的可行办法就是使用ini文件,也就是Windows初始化文件来保存一些我们的设置,然后让程序启动的时候从这个ini文件中读取相关配置。我们需要做以下的工作。 1.创建此ini文件,Windows对ini文件的操作有专门的函数,我们经常用的就是WritePrivateProfileString(转载 2016-09-17 16:23:30 · 579 阅读 · 0 评论