MFC
acoolgiser
微信搜索:acoolgiser
展开
-
MFC中“App类、Doc类、View类”区别与联系
转自:点击打开链接MFC中App,Doc,MainFrame,View各指针的互相获取,首先说明这四个类的执行顺序是App->Doc->MainFrame->View.App类就是这个SDI作为”程序”的入口有点像c语言的main()函数 。document/view模式,是为了在逻辑上,让数据和显示分开。一般在document里,定义document类的成员变量,来存数据,并用...转载 2018-05-28 09:42:53 · 1387 阅读 · 0 评论 -
MFC中,怎样在一个特定的控件里画图,比如picture control
基于CFormView的应用程序:拖入了一个长方形的Picture类型控件,控件的ID为IDC_PIC1,type为Frame,(Type还有Rectange、BitMap等类型)Sunken、Border为选中状态,现在想在该控件中画图,实现方法为,在OnDraw函数中加入以下代码:CRect rect;CWnd *pWin = GetDlgItem(IDC_PIC1);...转载 2019-02-27 21:47:19 · 9626 阅读 · 1 评论 -
"debug assertion failed"解决方案之一(error 原因之一)
这里是基于MFC对话框的应用程序,本来没有这个错误,删除了Edit Control控件后,出现这个错误。出错原因是因为只在界面上删除了控件,代码还没删除干净。解决办法:在cpp文件下,删除DoDataExchange函数中的代码:DDX_Control(pDX, IDC_EDIT1, GeometryType);再重新运行调试,错误解决!其实在.h头文件中还有该控件...原创 2019-02-28 10:29:46 · 7596 阅读 · 4 评论 -
无法启动程序,被调用的对象已与其客户端连接
如图所示错误。解决办法:关闭VS,重启打开即可。原创 2019-02-28 11:39:00 · 5376 阅读 · 1 评论 -
MFC radioButton 的分组用法,几个radiobutton控件分成一组,切换选择使用。
一、效果本人用VS2015实现基于对话框的MFC程序,效果如图:两个Groupbox里面分别各有四个radiobutton控件,分成了两组。实现对线型、填充类型的切换选择控制。二、实现步骤1. 分组设置属性在GroupBox“线型”中将radio1、radio2、radio3、radio4分为1组,在GroupBox“填充类型”中将radio5、radio6、radio7、...原创 2019-02-28 15:05:28 · 15774 阅读 · 2 评论 -
mfc 如何在某个按钮点击响应后才开始绘制,开始绘图函数ondraw()
mfc中如何在某个按钮点击响应后才开始绘制,才开始执行绘图函数ondraw(),(注:基于对话框的程序不是ondraw,而是OnPaint)。方法:在按钮点击事件中写入代码:Invalidate();即,使得窗口重绘。效果如图:点击“绘图”按钮前:点击“绘图”按钮后:猜想:如果不是按钮点击,而是别的响应方式,应该同样也可以吧,Invalidate(...原创 2019-02-28 20:37:05 · 2881 阅读 · 2 评论 -
MFC编程时出现错误: "char *" 类型的实参与 "LPCTSTR" 类型的形参不兼容 解决办法
MFC编程时出现错误: "char *" 类型的实参与 "LPCTSTR" 类型的形参不兼容 的原因是因为编辑器默认编码是Unicode字符集,因此只需要在 项目 - 属性 - 常规 中把字符集修改为“未设置”即可。如下图: 注意:这里的项目属性是在工程上面右键...原创 2019-02-25 16:33:21 · 3552 阅读 · 2 评论 -
MFC编程入门之前言
本系列主要偏重于理论方面的知识,目的是打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。本系列也会涉及到VC++的原理性的东西,同样更重视实用性,学完本系列以后,基本的界面程序都能很容易编写出来。VC++简介 VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别在于,C++是语言,而VC++是用C++语言编写程序的工具平台。VC++不仅是...原创 2019-05-30 21:00:28 · 174 阅读 · 0 评论 -
MFC编程入门之五(MFC消息映射机制概述)
在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。一、什么是消息? 窗口消息一般由三个部分组成:1、一个无符号整数,是消息值;2、消息附带的WPARAM类型的参数;3、消息附带的LPARAM类型的参数。其实,我们一般所说的消息是侠义上的消息值,...原创 2019-05-30 21:01:05 · 308 阅读 · 0 评论 -
MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)
本节开始为大家讲解偏向应用的知识——创建对话框。 对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是对话框,知识它做了很多美工方面的工作,将其大大美化了。 创建对话框主要分为两大步: 第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件; 第二,生成对话框类,主要包括新建对话框类、添加控件...原创 2019-05-30 21:02:25 · 3106 阅读 · 0 评论 -
MFC(C++)中 __declspec(dllexport) 和 __declspec(dllimport)的作用
从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用 这段时间要把tinyxml从静态库弄成动态库,要用到__declspec(dllexport)和__declspec(dllimport)来导出dll和lib文件。终于弄明白了export和import的作用,下面从使用的角度来说明一下他们的功能。 首...原创 2019-08-19 16:30:29 · 3142 阅读 · 0 评论 -
MFC拉框放大、缩小功能如何在鼠标移动时绘制透明矩形框
1. 在OnMouseMove鼠标移动事件中写入代码:void ClmzWorkView::OnMouseMove(UINT nFlags, CPoint point){if (LButtonDown == true){ CDC *pDC = GetDC(); pDC->SetROP2(R2_NOTXORPEN); CRect rect(startPt,e...原创 2018-08-07 15:38:32 · 2953 阅读 · 4 评论 -
MFC中树控件节点的点击位置的判断,涉及CTreeCtrl::HitTest()方法的参数值pFlags的含义区别及用法(pFlags值测试)
上一篇博客https://blog.csdn.net/acoolgiser/article/details/81330200提到了HitTest()方法,但是还没有说清楚用法,本文再通过测试来深入理解。 首先看一下MSDN中关于CTreeCtrl::HitTest()方法的用法说明:https://msdn.microsoft.com/zh-cn/library/x0w7ft34.a...原创 2018-08-01 15:34:32 · 1646 阅读 · 0 评论 -
MFC中的UINT与USHORT
注:转自samkieth的csdn博客 点击打开链接 在C, C++中不存在UINT这个关键字,UINT类型是unsigned int派生出来的int是带符号的,表示范围是:-2147483648 到 2147483647uint是不带符号整形,表示范围是0到42949 67295(2^32-1),即第一个数字不表示符号在C#中,uint 是关键字,表示一种整型,该类型根据下表显示的大小和范...转载 2018-07-03 11:18:05 · 2953 阅读 · 0 评论 -
CDC::SelectStockObject 与CDC::SelectObject 区别
virtual CGdiObject* SelectStockObject( int nIndex ); 其作用是选择系统预定义的GDI对象(stock -库存)。由于是系统定义的公用函数,所以用完以后也不用 手动删除。 CGdiObject* SelectObject(CGdiObject* pObject); 而SelectObject则是选择你自己自定义的的GD...转载 2018-07-03 11:36:28 · 970 阅读 · 1 评论 -
VS2010 \...\bin\rcdll.dll 无法找到资源编译器
错误如图:最简单的办法是在注册表中找到:HKEY_CURRENT_USER\Software\Microsoft\Microsoft SDKs\Windows在windows项中建如下两项并设置相应值:"CurrentVersion"="v7.0a""CurrentInstallFolder"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v...原创 2018-07-10 22:23:40 · 830 阅读 · 1 评论 -
stdafx.h的作用以及原理
转自:http://www.cnblogs.com/MuyouSome/p/3380033.htmlstdafx.hVC工程里面经常见到stdafx.h这个头文件,以前也没有特别注意,但是这个文件用不好经常会出错,所以就GOOGLE了一下,总算是弄清楚了。。。stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。所谓...转载 2018-07-11 10:42:30 · 192 阅读 · 0 评论 -
VC++ error C2533: “Layer::{ctor}”: 构造函数不能有返回类型
vc++ MFC 中出现错误 error C2533: “Layer::{ctor}”: 构造函数不能有返回类型 的原因:错误如图头文件中定义类时,class后面的大括号“}”后面少了分号“;”这里的class不一定是指当前报错的那个类,即我这里的Layer类,只要是Layer类所在的头文件中其他任何一个class后面少了“;”都会报错。(一个头文件定义了多个class)...原创 2018-07-11 17:42:36 · 592 阅读 · 0 评论 -
mfc vc++ 如何求点到直线的距离 判断点是否在线要素上?
首先知道线要素由点要素数组points构成,points可以是CPoint类型、Point类型、或者自定义类型。要判断Point类型的点p是否在由points组成的线要素上,只需要遍历计算该点到每一条线的距离,来判断点是否在线要素的某一部分上。 void Distance(Point *p){Point p1,p2;double x,y,distance;x=p-&g...原创 2018-07-24 17:03:20 · 1557 阅读 · 0 评论 -
MFC 如何给ComboBox下拉框控件添加item,如何添加顺序索引的数据项?
首先参考博客:https://blog.csdn.net/smtrobot/article/details/49306727提到了添加item可以用AddString方法,效果如下:我定义了一个数组:CString strFont[5] = { _T("宋体"),_T("楷体"),_T("仿宋"),_T("黑体"),_T("华文细黑") };想把这5个按数组索引的顺序添加到控件中。...原创 2018-07-25 09:56:25 · 26865 阅读 · 3 评论 -
MFC 如何设置spin control控件微调效果,只需要设置几个属性和简单的几句代码即可。
效果如图,点击上下按钮可以微调文本框中的值的大小。实现步骤:1. spin control控件是与编辑框控件配合使用的,先在对话框中添加这两个控件。如图:2. 在打开对话框窗体状态下,按照下图所示菜单中(或者通过快捷键)设置Tab键顺序。通过点击鼠标来调整顺序,如图,顺序必须是编辑框为1,spin为2。3. 然后在属性中设置绑定,在spin控件属性中设置Set...原创 2018-07-19 17:21:38 · 2996 阅读 · 0 评论 -
stdafx.h的作用以及原理
注:转自http://www.cnblogs.com/MuyouSome/p/3380033.html stdafx.hVC工程里面经常见到stdafx.h这个头文件,以前也没有特别注意,但是这个文件用不好经常会出错,所以就GOOGLE了一下,总算是弄清楚了。。。stdafx的英文全称为:Standard Application Framework Extensions(标准应用程...转载 2018-07-25 17:27:00 · 149 阅读 · 0 评论 -
MFC vc++ 中CTreeContrl如何自定义实现鼠标单击或双击响应事件 ,即重写类似于控件的响应事件或消息
代码部分摘录自“天上的猩猩的专栏”:https://blog.csdn.net/qq_23992597/article/details/51006920#commentsedit目的:自定义修改mfc窗口的FileView中已有的树结构,而不是添加的树控件实现的效果如图:点击“地图”后弹出框提示,点击响应效果与控件的响应事件类似首先需要重写CtreeContrl:① 在CVie...原创 2018-07-30 15:15:05 · 3609 阅读 · 0 评论 -
MFC 中的NMHDR、LPNMTREEVIEW、TVITEM
树控制的数据结构在使用树控制时需要了解两个个非常重要的数据结构TV_ITEM和TV_INSERTSTRUCT,前一个数据结构是用来表示树控制的树项信息,后一个数据结构是用来定义将树项增加到数据控制中所需要的数据内容。另外,还需要NM_TREEVIEW、 TV_DISPINFO和TV_HITTESTINFO三个数据结构,这几个数据结构的定义方法如下:①基本数据项结构typedef str...转载 2018-07-30 17:53:41 · 1624 阅读 · 0 评论 -
MFC中三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW
TVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。typedef struct tagTVINSERTSTRUCT { HTREEITEM hParent; HTREEITEM hInsertAfter;#if (...转载 2018-07-30 17:56:34 · 922 阅读 · 0 评论 -
MFC如何修改文件视图FileView中已有的树结构的右键菜单(其相应函数为OnContextMenu),即如何增加/修改/删除 菜单项?
在用VS做MFC编程时,新建的工程中自带了文件视图/类视图/属性窗口/输出窗口等内容。文件视图FileView中具有初始右键菜单,如图所示:那么如果想要给这个右键菜单增加菜单项,该如何实现呢?1. 首先可以看一下这个右键菜单是在哪里响应的,打开FileView.cpp,里面有一个OnContextMenu响应事件,其代码如下:void CFileView::OnContextMe...原创 2018-08-01 09:57:14 · 1536 阅读 · 0 评论 -
MFC树点击事件中CTreeCtrl::HitTest用法以及uFlag参数的不同值的含义
CTreeCtrl::HitTest的语法结构: HTREEITEM HitTest( CPoint pt, UINT* pFlags = NULL) const;HTREEITEM HitTest( TVHITTESTINFO* pHitTestInfo ) const; 参数的取值及含义: Value 含...原创 2018-08-01 14:50:00 · 4389 阅读 · 0 评论 -
ProcessShellCommand(cmdInfo) 的用法和功能
ProcessShellCommand()转自:https://blog.csdn.net/wangandy7811/article/details/3663447本文链接:http://user.qzone.qq.com/278288976/blog/1196240170 在我们用向导创建MFC应用程序时,在App::InitInstance()中总会出现下面这样的代码到底是什...转载 2019-08-23 15:55:50 · 743 阅读 · 0 评论