mfc
_寒潭雁影
中科大IT向博士,熟悉MFC,C++,C等语言,参与过ffmpeg、机器视觉、并行计算、数据库等相关项目的研发和代码的编写http://blog.csdn.net/weixinhum为本人博客,上面记录了本人的一些技术总结
展开
-
MFC按钮控件鼠标按下抬起响应
最近在用MFC这个几百年前的架构做工程的时候发现,其按钮控件没有自带鼠标按下和抬起的消息响应函数,因此做了一番研究。实现很简单,要实自己实现“BOOL PreTranslateMessage(MSG* pMsg);”这个虚类,先在对话框主类的“.h”中声明一下:BOOL PreTranslateMessage(MSG* pMsg);//响应鼠标按下抬起接着实现下即可:BOOL CButt...原创 2019-09-23 10:45:01 · 3438 阅读 · 0 评论 -
MFC 画标尺
在一些特殊应用中需要用到标尺来更加直观的描述事物,这时我们可以利用GDI绘图来完成,下面我们将绘制一个360°标尺并用其来标定一幅全景图像。 在MFC的窗体界面上绘制标尺是比较简单的,新建空白的对话框工程,找到OnPaint()函数,并在if (IsIconic()){ ...... }else{ ......}的else括弧中添加如下代码原创 2015-09-30 00:15:25 · 4303 阅读 · 0 评论 -
C++ 鼠标模拟程序
POINT mypoint;GetCursorPos(&mypoint);INPUT Input = { 0 };MouseMove(800, 1000);// left down Input.type = INPUT_MOUSE;Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;SendInput(1, &Input, si原创 2015-06-12 12:33:43 · 7900 阅读 · 1 评论 -
MFC 与Excel文件的交互操作
假日快要结束了,带着沉重的心情写下之前关于MFC与Excel文件交互的总结。由于VS的版本不同可能在操作上有些差异,所以在此指明下本篇文章的工程环境为VS2013,也建议大家用最新的。 说到程序对于Excel的操作,应该不能算是什么新需求了,方法也有好几种,诸如利用office提供的接口、开源代码之类的。本文在查了一些资料之后选择了实现起来较为反便的一种。其实现的方法基本上完全照抄的这篇原创 2015-06-22 18:16:16 · 7064 阅读 · 2 评论 -
MFC 控件字体样式和颜色设置
因为默认的字体大小比较小,且有时为了美观,MFC控件的字体样式更改有时显得比较重要。这一修改并不是很直观,需要经由代码来完成,代码如下:CFont *m_pFont;//创建新的字体m_pFont = new CFont;m_pFont->CreateFont(32, // 字体高度 0, // 字体宽度 0, // 字体倾原创 2015-06-17 18:49:47 · 15791 阅读 · 1 评论 -
C++ 播放音频文件
本篇文章利用“MCI API”来实现对音频文件的播放,只写到本人用到的最为简单的播放功能,这篇文章有对其详细的介绍,如果有需要可以去看看。 OK,下面直接上代码吧,本人用的是VS2013直接建的C++空白控制台程序,代码如下:#include "stdio.h"#include #pragma comment (lib, "winmm.lib") void main(){原创 2015-05-14 12:13:14 · 12095 阅读 · 5 评论 -
MFC 修改默认生成文件和默认生成工程内容
修改默认生成文件和默认生成工程的内容是非常非常实用的功能!因为这样我们就不用每次新建一个工程都去做以前做过的一些工作,譬如用到OpenCV就要去包含它的头文件等等,当然在.h文件中默认直接加上作者、公司的描述也会显得更方便,方法如下: 首先是修改.h和.cpp文件的默认生成内容(即添加新建项时文件将会自带你添加的内容,而不是空白一片),这个问题的关键处在VS的安装路径中,本人是C:\Pr原创 2015-04-24 21:56:15 · 2169 阅读 · 0 评论 -
MFC 调用默认对话框类对象成员和方法
这个功能其实并不常用,然而在多线程和回调函数中要调用默认对话框类的对象成员或方法还是可能要用到的,所以做下记录。 首先声明一个全局变量用以存储默认对话框类对象指针:LPVOID pParam;//对话框对象指针 在默认对话框类的初始化函数中给该指针进行赋值:pParam = (void *)this; 在需要调用默认对话框类对象成员或方法处,通过如下代码实现调用:原创 2015-04-23 17:18:57 · 2223 阅读 · 0 评论 -
OpenCV 通过 MFC 的 Picture Control 控件操作图像
如果希望对显示在MFC Picture Control 控件里的图像进行操作,比如画线画点之类的,可以利用 OpenCV 结合 MFC 本身的鼠标响应函数来实现。 如何将图像显示到 Picture Control 控件不谈,本文是采用的这篇博客所介绍的方法实现的。 点击打开链接 给对话框添加 WM_LBUTTONDOWN 鼠标左键点击消息,在消息响应函数中添加如下代码...原创 2014-06-06 14:31:53 · 5499 阅读 · 0 评论 -
C++ 网络连通性检测
有时程序需要保持和某个指定网络的连通,有人的情况下我们直接用ping命令查看即可,然而程序自身检测会稍微麻烦一点。 实现思路如下: 用程序打开控制台->运行ping命令,并指定控制台返回值写入到文件中->分析文件,得到ping命令返回状态->得到网络连通情况 代码如下:#include #include #include using namespace原创 2015-12-02 23:21:35 · 9340 阅读 · 5 评论 -
MFC 多语言环境的实现
关于MFC多语言环境的实现,其本质其实只是下面的几句代码#define CHINESE 0#define ENGLISH 1void CMFCMultiLanguageDemoDlg::LanguageChange(int nLanguage){ CMenu* pSubMenu; CMenu* pMenu = GetMenu(); switch (nLangu原创 2016-04-20 21:12:35 · 5889 阅读 · 0 评论 -
DirectX 在MFC框架下的应用
一般而言,用到DirectX进行编程时,会直接在win32项目下自己创建窗口,然后在该窗口上进行操作。然而,如果已经用MFC写了一部分代码,然后突然发现用DirectX来处理3D的显示部分会比较给力,这时就需要将两者结合起来了。 由于之前作为新手时研究过一段时间的DirectX,在心里留下了一大片阴影,因此直到最近被逼无奈才又开始搞这个。结果发现,对于其跟MFC框架的结合并没有想象中的那么困难,原创 2016-05-23 18:51:08 · 4805 阅读 · 1 评论 -
Windows平台C++截屏程序
CWnd *pDesktop = GetDesktopWindow();CDC *pdeskdc = pDesktop->GetDC();CRect re;//获取桌面的大小 pDesktop->GetClientRect(&re);CBitmap bmp;//创建内存位图bmp.CreateCompatibleBitmap(pdeskdc, re.Width(), re.Height原创 2017-12-01 16:15:42 · 6212 阅读 · 1 评论 -
MFC 使用控制台打印程序信息
在MFC编程中,代码的调试一直是比较悲剧的事,通常是搞一个MessageBox原创 2014-05-03 13:33:05 · 4145 阅读 · 0 评论 -
C++ PDF文档相关操作
关于在Windows平台下用C++实现PDF文档制作的相关操作,有不少库可以帮助我们实现。本人因为一开始先接触到PDFlib,所以就用这个库做了个小工程,本篇文章为该工程用到的相关操作总结。 PDFlib并非是开源库,要使用需要付费,否则会有一个让人不要不要的水印在页面的后头。当然,我大天朝从来不理会这些,有压迫的地方就总有雷锋站出来搞个破解版,该库也不例外,可以到这位雷锋的博客地点去下原创 2015-08-26 16:56:26 · 14579 阅读 · 6 评论 -
OpenMP基础使用
OpenMP是CPU并行加速相关的编译处理方案,VS很早的版本就对其提供了支持,不过默认是关闭的。要开启这一支持,只需要在项目的属性中设置就可以,具体选项为:配置属性->C/C++->语言 在右侧列表中有一项“OpenMP 支持”,下拉选择“是(/openmp)”就可以了。 其实本人是在前几天才知道有这个东西存在的,朋友跟我说这个东西用起来相比正常的开启多线程要方便很多,经过研究发现其原创 2015-03-19 21:29:33 · 2121 阅读 · 0 评论 -
MFC RS232串口通信
PC程序跟RS232串口进行通信算是比较老的题目了,不过老归老,只要用这个接口的硬件还在,就难免要去折腾它。而这个时候就会发现老的坏处在于资料都是半截入土,拍一拍烟尘四起,抖一抖蛛丝乱飞的玩意。 现在做这个的基本都是用的SerialPort这个类,而这个类的最新更新已经有一段岁月,所以本人在下载了这个东西之后,费了些功夫才将其修改到能运行在VS2015版本的PC程序上,在此把修改完的版本原创 2015-09-04 22:38:49 · 13230 阅读 · 6 评论 -
OpenCV 2.2版本以上显示图片到 MFC 的 Picture Control 控件中
OpenCV 2.2 以及后面的版本取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序员无法调用里面的显示函数来将图片显示到 MFC 的 Picture Control 控件中。为此,网上很多人表示只要将那两个文件人为的提取出来然后放到工程里面就解决问题了,也提供了两个文件的下载,但是这麻烦不说,还会导致一些奇奇怪怪的报错(至少本人是这样的,很崩溃!)。所以原创 2014-06-06 01:23:09 · 3979 阅读 · 1 评论 -
MFC combo box控件操作
添加combo box控件,控件ID为IDC_COMBO_PRESETTING,可由原创 2014-04-21 18:12:09 · 2092 阅读 · 0 评论 -
MFC 用 Direct2D 显示图像到 Picture Control 中
2016年第一天,新年快乐!!! 由于一直跟视频这块打交道,对于图像编解码和显示等方面都有所研究。最近遇到一个性能要求比较高的应用,原本的GDI绘图导致到线程负荷比较重,造成整个系统不稳定,因而生了要用Direct2D来取代的念头。经过一番研究后发现,Direct2D原来是这么的简单方便,而效率也比GDI有了显著的提升。废话不多说,下面还是直接上代码吧。 本人一开始是在网上搜的原创 2016-01-01 02:29:16 · 5023 阅读 · 3 评论 -
MFC窗口客户区全屏显示以及PICTURE控件全屏显示
相信用电脑看过电影的人都会下意识的默认双击一个播放器就会得到全屏播放影片的效果,那这个是怎么做到的呢?其实本人也是不知道的。。当然这篇文章不是到这就完了,而是介绍一种在MFC上全屏显示窗口或者PICTURE控件的方法,用此方法能做到全屏显示图像的效果,当然好坏还是有待考证的。首先从简单的着手,来看如何实现MFC窗口的全屏显示,废话不说上代码:在对话框头文件中添加变量://对话框功能p原创 2014-07-29 23:56:32 · 5638 阅读 · 6 评论 -
MFC 实现CUDA加速
这篇文章写的是之前关于CUDA加速的另外一篇文章没详谈的部分,当时因为嫌麻烦懒得写,最近买了GTX960心情大好!决定把这个坑给填了。 当然由于本人才疏学浅,关于配置这些东西也是一知半解,所以参考了这篇文章,如果看到的朋友觉得本人讲的不好可以参考下。 OK,进入主题之前说一下,本篇文章基本是参照本文开头提到的那篇来的,有比较强的关联性,如果看的不太明白的话建议先看那篇。下面正式原创 2015-03-23 23:00:26 · 9054 阅读 · 15 评论 -
MFC 将文件拖进对话框获得文件信息
很多软件都支持直接将文件拖进去进行处理的功能,具体一点如暴风影音,将视频或者音频文件拖进去就会自动开始播放,那么这个功能在MFC上面怎么实现的呢?其实很简单,步骤如下:第一步:将对话框属性中的 Accept Files 属性值设置为 True第二步:添加WM_DROPFILES消息第三步:定义WM_DROPFILES消息的响应函数如下:void CDragFileToDlgDlg:原创 2014-10-22 00:08:48 · 2860 阅读 · 0 评论 -
MFC List Control整行选中及其他相关技巧
在mfc使用List Control控件的大部分时间需要有整行原创 2014-04-17 23:06:38 · 15669 阅读 · 0 评论 -
MFC 右键菜单呼出
CMenu menu,*popmenu;menu.LoadMenuW(IDR_MENU_RBUTTONDOWN);//IDR_MENU_RBUTTONDOWN为popmenu = menu.GetSubMenu(0);GetCursorPos(&point); //鼠标位置popmenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this原创 2014-04-12 21:18:46 · 1582 阅读 · 0 评论 -
MFC调用WebBrowser控件直接编写javascript代码及其他WebBrowser相关技巧
在mfc操作网页的过程中,使用ActiveX控件原创 2014-04-14 23:34:36 · 4615 阅读 · 1 评论 -
MFC Month Calendar Control 控件使用
在上层软件编程中,往往需要提供一个月历控件让用户选择相应日期或者用此月历控件来强调特定的一天。MFC的 Month Calendar Control 控件自系统升级到 Windows 7 之后,对于日期控件所能做的操作变少了,不能对指定的日期的背景颜色进行更改,在网上查了很久之后发现是操作系统绘图风格的关系。在这种情况下。只能通过加粗特定日期的字体粗细来凸显该日期的不同(至少本人只想到这个办法)。原创 2014-06-05 16:35:19 · 4851 阅读 · 1 评论 -
MFC TAD Control 控件的使用
在一些程序中,往往是需要在一个窗体中提供原创 2014-05-20 23:52:05 · 1193 阅读 · 0 评论 -
MFC CButtonST按钮增强类使用
MFC UI设计过程中经常需要对按钮进行各种美化操作,使用原生的CButton类很多的效果无法达成。CButtonST类提供了丰富的操作函数能满足各种对按钮的美化要求。不知道是什么原因,网上现有的资源几乎都是VC++6.0版本的,对于VS高一点的版本支持不是很好,编译会报一堆错误。本人使用的是VS2012,在文章的最后会提供经过修改可以直接运行在VS2012上面的版本,由于该版本是本人参考网上大神原创 2014-04-25 21:45:11 · 2290 阅读 · 0 评论 -
VS编译的可执行默认以管理员身份运行
文如其名,很多程序如果不以管理员身份运行的话无法操作到系统盘的一些文件,而往往有些时候这一功能又是必须要有的,虽说可以通过右键可执行文件修改其属性来设置默认执行权限为“以管理员身份运行”,然这毕竟麻烦。很多用户也根本就不会这么去做,是故让程序执行时就自己去要求管理员权限是最终的解决方法。在VS下面,这个问题其实很好解决,就是做如下操作:右键工程选择属性->配置属性->链接器->清单文件->UAC执原创 2014-11-12 21:25:22 · 8686 阅读 · 0 评论 -
VS2013 编译VC6.0等比较老版本的MFC工程字符集错误问题的解决方法
用VS2013编译网络上一些用比较老版本的VS写的MFC程序总会出现字符集错误问题,原因是2013取消了对 (MBCS) 库的多字节字符集的默认支持,改成原创 2014-12-16 21:53:40 · 2267 阅读 · 0 评论 -
MFC List Control控件添加单元格编辑和单元格下拉列表项以适用于数据库相关操作
作为现代的软件,往往是连着数据库的,而连着和操作方便之间,还有着用户界面这道坎。MFC是Windows上比较好开发用户界面的封装类,然而其自带的控件中没有对于数据库表格支持较好的控件,这时利Active X控件中的DataGrid 可以得到比较好的效果。原创 2014-11-27 21:38:10 · 8396 阅读 · 23 评论 -
MFC 接收键盘输入指令
程序接收键盘输入并作出相应的反馈是一个非常常见的功能,在MFC中提供了WM_KEYDOWN,WM_KEYUP这些消息来反便我们进行编程,但是这是在窗体没有其他控件的情况下才适用的。当有其他控件时,其他控件(其实也是窗体)肯定会有一个获得焦点使得这些消息失效,我们可以通过重载对话框程序的PreTranslateMessage(MSG* pMsg)虚函数来实现这一功能。 首先在对话框原创 2015-02-26 02:16:32 · 11307 阅读 · 4 评论 -
MFC 文件与文件夹相关操作
计算指定文件夹的总大小实现文件DWORD64 CMFCGETFOLDERSIZEDlg::GetFolderSize(CString szPath)//获得文件夹大小,返回值大小单位为M{ CString szFileFilter = szPath + L"\\*.*"; HANDLE hFind = NULL; WIN32_FIND_DATA fileinfo; DWORD6原创 2014-07-31 21:57:01 · 1618 阅读 · 0 评论 -
MFC 根据需要调整对话框大小
通常在写图片或影像显示相关程序的时候需要先根据图像的分辨率来动态调整对话框和里面控件的大小和比例之后再进行显示。下面来介绍下做法,单单是调整对话框的大小和位置是很简单的,只需要下面的代码int screenwidth = GetSystemMetrics(SM_CXFULLSCREEN);//获取屏幕分辨率宽度,不包括任务栏等区域int screenheight = GetSystemMet原创 2015-02-16 22:25:40 · 6302 阅读 · 0 评论 -
MFC 弹出对话框
在一个稍微大一点的程序中往往需要多个窗体来进行交换。有些窗体的出现是为了提醒用户注意或是为了实现一项指定功能,不希望用户在关闭这个窗口前对相应程序的其他窗体进行操作,这个时候会用到模式对话框,本文所讲的就是如何在 MFC 中创建一个最为简单的对话框,并在一定条件下以模态弹出该对话框。第一步:创建对话框,在程序的资源视图中Dialog文件夹处右键->插入对话框第二步:为对话框添加对应的对话框原创 2014-11-13 23:40:48 · 4167 阅读 · 0 评论 -
MFC 定时器使用
定时器是程序中很常用到的一个功能,在MFC中其设置也非常简单,可做如下定义开启定时器:SetTimer(1, 1000, NULL); 参数一为定时器的ID号,是定时器的标识,这个在关闭定时器时有用,如果要设置多个定时器,也可以通过判断回调函数传入的ID值来区分不同的定时器; 参数二为定时器执行函数的间隔时间,单位为ms; 参数三为回调函数指针,为NULL时系统默原创 2015-02-06 00:14:43 · 1763 阅读 · 0 评论 -
MFC 打印相关操作
虽说现在已经有越来越多的人转向用C#来做界面的开发,但是对于一个习惯了C++这种半面向对象语言的人来说,MFC依然是难割舍的存在。最近在做些数据库相关的事,因为是数据库,自然离不开打印报表之类的东西,所以顺带的也去研究了下如何用MFC来进行打印相关的的操作。 本篇文章参考的比较多的是这篇文章和MSDN的示例代码,另外这篇文章也提供了很多有用的参考,如果想看原文的话可以去看看。原创 2014-12-29 00:42:33 · 3557 阅读 · 0 评论 -
MFC 对MYSQL数据库相关操作
记得看过有人说,现在的软件基本上都是连着服务器的,如果一个软件没有跟服务器相连,基本也是没什么作用的。虽然这种说法略显片面,但也恰恰好说明了数据库之于软件是何等的重要。原创 2014-12-01 22:28:10 · 3735 阅读 · 1 评论 -
MFC 控件随窗口尺寸变化自动调整位置及大小
在MFC编程过程中经常会出现这样一个问题,在给原创 2014-05-15 17:30:03 · 12048 阅读 · 4 评论