
MFC
文章平均质量分 87
法哥2012
QQ:2533740151
展开
-
C++ 程序崩溃定位分析解决方案
需求背景用Visual Studio 2017开发的MFC程序发布后,客户在使用时出现了挂机的情况,受限于使用场景和复现条件等因素,分析解决这类概率性的问题遇到了一些困难。解决方案利用PDB和dump文件定位问题并进行调试。 关于pdb文件 什么是pdb文件,pdb文件是“程序数据库”Program Data Base的简称,包含了程序的代码信息。通过这个文件,可以查看对应断点的位置,堆栈信息等内容;使用pdb使得我们无需代码也可以掌握程序的堆栈运行状态;Pdb文件是链接器原创 2020-08-01 14:35:47 · 2969 阅读 · 0 评论 -
位图文件分析
位图是Windows系统中一种最简单也是最基本的图像格式,了解位图的文件结构有助于对位图进行各种操作。关于位图的存储和显示普通的显示器屏幕是由许许多多点构成的,我们称之为象素。显示时采用扫描的方法:电子枪每次从左到右扫描一行,为每个象素着色,然后从上到下这样扫描若干行,就扫过了一屏。为了防止闪烁,每秒要重复上述过程若干次。例如我们常说的屏幕分辨率为1024*768,刷新频率为80Hz,意思原创 2014-04-01 00:21:27 · 1873 阅读 · 0 评论 -
VC中利用ADO访问数据库的一个简单实例
void CAdoDlg::OnBtnQuery(){// 初始化OLE/COM库环境CoInitialize(NULL);//_ConnectionPtr 智能指针 定义一个连接对象 同时对这个对象进行初始化_ConnectionPtrpConn(__uuidof(Connection));//记录集的指针对象 同上_RecordsetPtr pR原创 2014-04-13 23:48:13 · 1353 阅读 · 0 评论 -
MFC中利用ADO对数据库进行简单操作的实例
目标:实现对数据库中的数据进行简单地操作,包括增、删、改、查。第一步,创建一个基于对话框的应用程序,命名为TestAdo第二步,按照图1的界面布局添加控件原创 2014-04-16 22:37:16 · 9530 阅读 · 3 评论 -
图书管理系统中标签控件的使用示例
1、新建一个MFC基于对话框的应用程序,工程名为TabControlTest。 2、打开资源视图界面,在对话框中添加一个标签页控件,并为此控件关联一个CTabCtrl类的成员变量m_tabctrl。3、创建若干个对话框资源作为标签页控件的标签。 修改两个属性: Border:none // 边界为空,没有标题栏 Style:Child // 这个模板就原创 2014-04-21 23:45:14 · 1960 阅读 · 0 评论 -
图书管理系统启动界面的设计与实现
启动界面也即欢迎界面,即在应用程序启动时一闪而过的窗体界面。启动界面可以为用户提示一定的信息,用户无须对其进行任何的操作。启动界面是应用程序中最先显示给用户的一个界面,主要用于数据加载的延时。在数据加载时显示这样的界面,可以避免用户由于等待时间过长而产生焦虑。一 启动界面的设计1. 新建一个MFC基于对话框的应用程序,工程名为LibraryManagementSystem。原创 2014-04-24 23:36:12 · 3316 阅读 · 0 评论 -
VC++实现输入字符动态更新列表查询
1 程序设计界面 2 为该窗口控件标识和为其关联的变量 3 数据库中表的数据 4 程序实现展示 5 输入转载 2014-05-03 00:14:31 · 1043 阅读 · 0 评论 -
动态链接库导出函数示例
第一步,新建项目,选择win32项目(不是win32控制台程序),命名为ClassDll根据导向选择DLL,完成。第二步,新建一个头文件,命名为 ClassDll.h,在这个头文件里添加下面的代码:class _declspec(dllexport) Point{public:void output(int x,int y);int Add(int a,int b);原创 2014-05-07 23:21:32 · 3182 阅读 · 0 评论 -
动态链接库和静态链接库的创建及应用实例
封装库学习心得以前用别人的框架API函数,只能看到一个接口类,这个接口类里面全是纯虚的方法,但不明白是如何实现这些功能的,现在狠下心将其研究清楚。封装库按照大类可以分为两种,即动态链接库和静态库而动态链接库又分为两种加载的方式,动态加载和静态加载。下面我就讲讲这这些库的具体创建和具体应用。一,动态库的创建我用的vs2003编译工具,我以游戏大厅房间桌子的一些接口转载 2014-05-06 23:21:24 · 670 阅读 · 0 评论 -
MFC在SDI中添加背景图片以及改变程序图标的方法
一、MFC在SDI中添加背景图片选择bmp格式的图片,在资源里导入图片到bitmap里面,ID为IDB_BITMAP_DLGBK;图背景图片48*48两种方法实现:方法一:在C**View类头文件添加画刷的声明: CBrush m_brush;在C**View构造函数中加入代码:CBitmap bmp;bmp.LoadBitmap(IDB_BITMA原创 2014-05-12 23:21:08 · 2355 阅读 · 0 评论 -
俄罗斯方块(一) 界面设计与实现
近期尝试了一下俄罗斯方块游戏,基本功能和界面的设计已经初步完成。分界面和功能实现两个模块简要地介绍一下实现过程。一 界面设计与实现界面示意图如图1-1所示,主要实现了界面以任意比例拉伸或缩小,界面中控件的位置和大小相对位置保持不变,图1-2是界面最大化显示的效果。界面中的所有控件 包括Button RadioButton ListCtrl Combox 等控件均为动态生成,位置大小需要简单原创 2014-05-16 00:03:23 · 8696 阅读 · 0 评论 -
俄罗斯方块(二) 功能设计与实现
俄罗斯方块功能实现,主要包括产生一个方块首先定义一个数据结构struct point{int x;int y;};表示一个方块中的一个格子,并规定每一个方块包含有四个这样的格子。一个方块定义为:point m_pointInit[4];//用于产生俄罗斯方块 4个方格组成一个方块这样就可以表示俄罗斯方块的7种基本的形状。约定如下: case 1:原创 2014-05-16 23:28:34 · 2244 阅读 · 0 评论 -
实例:常用数据类型之间的相互转换
常用的数据类型之间的相互转换,包括:int与CString,double与CString,float与CString,char* 与CString ,string 与CString ,char 与string ,WCHAR*(BSTR) 与CString,WCHAR*(BSTR) 与char* //int to CStringCString CMFCDataType::IntConve原创 2014-07-09 22:13:04 · 794 阅读 · 0 评论 -
C++将HBITMAP保存为bmp图片
BOOL CBMP2ArrayMultiplyDlg::SaveBitmapToFile(HBITMAP hBitmap, CString szfilename){ HDC hDC; //当前分辨率下每象素所占字节数 int iBits; //位图中每象素所占字节数 WORD wBi原创 2015-11-23 17:02:39 · 11977 阅读 · 2 评论 -
一种对图象进行局部放大的有效方法
附例:一种对图象进行局部放大的有效方法 在实际工作中,对图象进行局部放大,以便更加清楚、细致的观察图象的某个部位,是经常遇到的问题。在Visual C++6.0中,巧妙、灵活的运用CDC类的StretchBlt()函数以及有效的完成对鼠标的消息映射等,就能实现这一目的;这里所实现的对图象进行局部放大的操作是:(1)移动MOUSE鼠标,放大显示图象的不同部位。(2)左击鼠标放大倍率。转载 2014-04-05 23:18:58 · 2721 阅读 · 0 评论 -
根据位图数据直接绘图
在处理网格应用传输图像时,接收方收到的将是数据流,如何能够将图像数据显示在窗口中呢?Windows系统提供了StretchDIBits函数,通过它能够根据位图的数据流将图像显示在窗口中。函数原型:int StretchDIBits(HDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int原创 2014-04-03 23:25:31 · 2002 阅读 · 0 评论 -
不用配置文件实现VC++程序记忆功能
//////////////////////获取数据m_iDestPort = AfxGetApp()->GetProfileInt(_T("ClientParams"), "LastDestPort", 0);m_iLocalPort = AfxGetApp()->GetProfileInt(_T("ClientParams"), "LastLocalPort", 0);m_bLas原创 2018-01-23 19:02:37 · 695 阅读 · 0 评论 -
error LNK2005: _sprintf 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
VS2010 引用json库文件时,json解析失败的一种解决办法转载 2016-11-18 19:07:29 · 3176 阅读 · 0 评论 -
VC实现高精度定时器
VC实现高精度定时器(精确到1ms)原创 2016-10-29 11:37:13 · 2658 阅读 · 2 评论 -
VC 获取函数执行时间GetTicketCount()
VC 获取函数执行时间GetTicketCount() GetTickCount是函数。GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。示例示例代码如下:BOOL CLogFileHelper::IsBootingCompleted(){ int time,starttime=GetTickCount();原创 2016-10-27 09:40:53 · 3663 阅读 · 0 评论 -
MFC可编辑列表框控件功能实现
本文介绍了MFC中列表框控件扩展方法:可编辑功能的实现。原创 2016-08-28 21:29:10 · 8800 阅读 · 3 评论 -
获取Windows操作系统版本和位数
(1)获取系统位数32bit 64bitvoid CXXXDlg::GetSysBit(bool& bIs32Bit){ bIs32Bit=true; SYSTEM_INFO si; // Copy the hardware information to the SYSTEM_INFO structure. GetNativeSystemInfo(&si); // Displa原创 2016-08-04 22:46:24 · 5968 阅读 · 0 评论 -
扫雷游戏的实现C++
扫雷游戏是Windows操作系统自带的一个小游戏,几乎每个电脑使用者都接触过它。它同时也是一款比较经典的小游戏,实现它的方法很多,也可以用不同算法和语言实现。近期用了两个周末(各一天)和大半个月的空余时间终于实现了一个比较完整的扫雷程序。现通过C++来呈现这款小游戏的实现方法。 关于扫雷:游戏的规则:在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小原创 2014-02-26 21:00:42 · 19998 阅读 · 1 评论 -
VC实现显示文件复制的进度
本文提供了mfc中一种文件复制显示进度的方法。原创 2016-07-25 22:45:21 · 2794 阅读 · 0 评论 -
VS2008版本发布的问题
MFC程序编译的程序在其他没有安装MFC运行库的电脑上是不能够直接运行的,在发布扫雷程序的时候就碰到了这种问题。在网上找了相关的资料介绍,像将所需要的动态链接文件全部拷到目标电脑的system32文件夹下,最后发现太多了,根本行不通。最后花了两天的是时间和好友研究了这个问题,最后终于解决,下面就以我发布的那个扫雷程序介绍一下我在发布扫雷程序中解决这个问题的具体方法,希望可以给解决类似问题的博友们一原创 2014-03-01 23:54:47 · 2141 阅读 · 0 评论 -
一种获取图片RGB参数值的简单方法
在编程的时候碰到了一个需要获取背景图片的颜色的参数值的问题。这里介绍一种简单的方法供解决类似问题的朋友们参考!打开Windows自带的画图软件就可以了。操作如下:(1)程序——附件——画图,界面如下:(2)将需要取色的图片贴上去(借助键盘中的PrintScreen键即可),如下图所示:(3)选中左边取色工具:如下示意图所示:(4)用取色工具选原创 2014-03-09 01:09:35 · 13988 阅读 · 0 评论 -
一种通过鼠标操作实现多边形的绘制的实现方法
前面的《MFC基本图形的绘制(三)在SDI中实现绘图操作》对多边形的绘制做了一个简单的介绍。尽管也实现了多边形的绘制,但那种方法有很大的局限性,最主要的就是表现在多边形的顶点(个数和位置)必须固定。通常在实际的项目中,多边形的顶点个数和位置并不固定。例如在进行道路计算时,可能会避开某些区域(规避区域),这样就需要在道路计算之前在地图中设置一个规避区域,该区域通常会是一个不规则的多边形,顶点个数和位原创 2014-04-02 00:01:27 · 10086 阅读 · 3 评论 -
MFC实现递归遍历文件夹内的所有文件夹和文件
[摘要] 为了简化自己的工作,所以就用MFC快速做了递归遍历文件夹内所有文件夹和文件的功能。因为这个功能非常实用,非常有必要总结出来供大家参考。使用MFC实现遍历一个文件夹下的所有目录和文件,使用CFileFind类即可。然而要得到一个文件夹下的所有文件,包括子文件夹下的所有文件,就要使用递归了。当然,不一定非得是递归,也可以用循环。只不过使用递归实现比较简单罢了。 使用CFil原创 2016-02-24 10:07:38 · 10400 阅读 · 3 评论 -
MFC 中创建简单超链接
MFC SDI程序在菜单的最后通常会有一个帮助的菜单项,点击后弹出一个关于程序基本信息的对话框(CAboutDlg),想在这个界面添加一条超链接,指向指定的网页,这个网页上存放介绍这个程序更多的信息。查资料说API函数使用ShellExecute可以实现,试了一下,没有成功,这种方法后续再补充。先介绍一下另外一种实现方法(注:这种方法也也是在网上搜集整理的)。步骤如下:1) 新建一个MFC原创 2014-02-25 20:19:51 · 2484 阅读 · 0 评论 -
MFC基本图形的绘制(二)坐标映射
在讨论坐标之前,先看下列语句:pDC->Rectangle(CRect(0,0,200,200));这是在某个设备环境中绘制一个高为200个像素,宽也为200个像素的方块。由于默认的映射模式是MM_TEXT,其逻辑坐标(在各种映射模式下的坐标)和设备坐标(显示设备或打印设备坐标系下的坐标)相等。因此这个方块在1024*768的显示器上看起来要比在640*480的显示器上显得小一些,而且若将原创 2014-03-26 00:28:51 · 3228 阅读 · 0 评论 -
MFC基本图形的绘制(三)在SDI中实现绘图操作
例:绘制一条由点连起的曲线(简单图形) 新建一个MFC SDI应用程序,工程名为DrawGraph;添加菜单命令:绘图和设置;绘图子菜单项为绘制图形的类型。包含如下类型:绘图类型:表1-1 绘图类型菜单项名称Caption菜单项ID 点DotIDM_DOT直线原创 2014-03-28 00:24:52 · 3438 阅读 · 1 评论 -
MFC学习笔记之图形保存与重绘
先增加一个新的菜单项 绘图 ,然后在里面增加4个子菜单项 点 线 矩形 椭圆 ,在View类中响应各个子菜单项,为View类增加一个私有数据成员 int m_nDrawType 用来保存用户所做的选择 这个和上一篇日志的一样 所以代码不贴了,然后就是响应 OnLButtonDown 和 ONLButtonUp 消息 进行相应的绘图。我们知道当窗口大小改变或是窗口被切换的时候,程序就会发送一个WM_转载 2014-04-03 22:09:33 · 4212 阅读 · 1 评论 -
MFC组合框控件总结及用法示例
Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。编程时用到了组合框,这个控件用得不是很多,现将组合框控件的属性和方法做一个小结,供后续参考。组合框控件既可以进行输入,也可以在列表框组成部分中进行选择。打开组合框控件的属性窗口,下图所示:原创 2014-04-26 23:01:50 · 18827 阅读 · 1 评论 -
MFC获取编辑框内容以及UpdateData方法
编程中多次用到获取界面中编辑框中的内容。关于编辑框还有一些其他的问题:如UpdateData(TRUE),函数参数为TRUE或FALSE的含义,以及编辑框关联值变量(CString)以及控件变量(Edit)获取编辑框的内容等问题。先就这几个问题做小结,供后续参考,后续再做补充。新建测试界面如下:原创 2014-04-27 01:11:47 · 15541 阅读 · 0 评论 -
MFC窗体滑动、缩放、渐变动态效果的实现
要实现动画显示窗体效果需要使用AnimateWindow函数,并设置0x00000010风格,由于该函数并没有被封装,所以需要进行手动导入User32动态库。并定义0x00000010风格为AW_CENTER。第一步,定义两个宏,用于界面的动态显示和消失#define AW_CENTER 0x00000010 //动画#define AW_HIDE原创 2014-05-03 23:43:00 · 3196 阅读 · 0 评论 -
MFC工具栏将位图分隔为图标的问题
编程中碰到了需要引用工具条中的图标的问题,原创 2014-05-05 22:52:27 · 2435 阅读 · 0 评论 -
MFC静态加载dll和动态加载dll示例
一、静态加载DLL 函数的定义和使用方法:第一步: 运行AppWizard,定义项目名为mydll,选择MFC AppWizard(dll),而不是MFC AppWizards(exe)。第二步: 在这个例子中,只有一个AppWizard屏幕出现,选择MFC扩展DLL(MFC Extension DLL (using shared MFC DLL),点击FINISH生成原创 2014-05-08 23:41:01 · 7259 阅读 · 0 评论 -
MFC SDI 屏蔽主菜单和工具栏以及添加背景标题等操作
一、添加标题 二、屏蔽工具栏int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)注释掉所有工具条相关的内容即可 三、屏蔽菜单栏 手动删除所有菜单项,添加一个删除所有菜单项的函数。具体为:先在MainFrm.h中添加函数声明(在类 CMainFrame 的声明之外)//手动屏蔽掉主菜单项st原创 2014-05-09 23:04:41 · 1777 阅读 · 0 评论 -
SDI在视图类中添加按钮以及消息响应
在单文档视图(SDI)结构中视图一般用来显示数据。但是,有时也希望在视图中显示按钮或其他的控件,以满足用户的需要。下面将给出一个手动添加按钮并使按钮具有响应事件功能的实例。第一步:添加一个按钮首先,在**View.h中定义一个按钮标识 #define ID_BUTTON 100其次,给C**View类添加一个成员变量 CButton m_btnButton; //这条语句写在*原创 2014-05-10 00:41:32 · 1342 阅读 · 0 评论 -
MFC控件和背景图片自适应窗口最大化和拉伸缩放的实现
在编程时碰到了窗口大小改变时控件位置的调整问题。这里在单文档和对话框中分别介绍一下这种方法的实现。第一部分针对 MFC 单文档程序中改变窗口的大小时,视图中的控件位置能够以相应的比例进行调整。第二部分针对对话框应用程序。一、MFC SDI中控件和背景自适应窗口最大化和拉伸缩放的实现1.控件示意图1和示意图2展示了窗口自由缩放,界面中的控件相对位置不变的效果。 示意图1原创 2014-05-11 23:28:25 · 15150 阅读 · 0 评论