
MFC学习笔记
C_to_OOP
这个作者很懒,什么都没留下…
展开
-
MFC学习笔记之消息映射机制
0x00 windows应用程序都是消息驱动,其中MFC,其界面操作或者线程间通信是通过处理消息实现相应的操作,如用户在操作窗口时会产生消息,将其送给窗口的消息处理函数,对用户的操作做出对应的响应。0x01 消息MFC的窗口消息含三个部分:1_消息值(一个无符号整数,经常被定义为宏)2_消息附带的WPARAM类型的参数3_消息附带的LPARAM类型的参数wi原创 2017-07-17 13:08:51 · 526 阅读 · 0 评论 -
解决错误error C2664: “CPropertySheet::AddPage”: 不能将参数 1 从“CAddendPage *__w64 ”转换为“CPropertyPage *”
在学习鸡啄米编写的《VS2010/MFC编程入门之十四(向导对话框的创建及显示)》的博文时,运行在VS2005上的时候,出现了一个错误,具体报错如下图所示。其报错指向下图所示的代码区域(报错的代码已经用黄色标注出来)经检查是因为未在CAddendPage这个类中重写OnSetActive()函数的原因,添加之后,软件运行正常。具体操作步骤如下:S1_打开顺序如下:资源视图-原创 2017-07-18 11:15:31 · 1421 阅读 · 0 评论 -
两类DIB图片需要辨析的地方
在做通过鼠标设置ROI并对其进行阈值化功能的时候,发现处理的图像区域总是与我用鼠标设置的区域上下颠倒,源代码如下: for (UINT i=rc.bottom; i<rc.top; i++) { for (UINT j=3*rc.left; j<3*rc.right; j=j+3) { //在BMP图片中颜色顺序为BGR //color=red*0.299+g原创 2017-08-02 08:59:20 · 618 阅读 · 0 评论 -
MFC学习笔记之对话框
0x00 数据交换和检验在MFC中,改变控件的属性,其会通过对话框类自动生成的成员函数DoDataExchange()来实现修改相应关联的变量的值。这种现象称为对话框的数据交换和检验机制。需要注意的是,在该机制下DoDateExchange()并不是被自动调用,需要开发者在程序中调用CDialogEx::UpdateData()函数,再由其自动调用DoDataExchange()函数。Up原创 2017-07-17 15:00:53 · 594 阅读 · 0 评论 -
MFC学习笔记之常见控件
Windows系统下的应用是消息映射机制来处理消息的,应用程序中的控件也是如此,每个控件都有对应的消息事件。当然处理事件是需要开发者,自行去创建的。在消息映射机制中,消息包含三个参数:消息值、wParam参数和IParam参数。控件的消息映射宏的格式大致是 ON_消息码(控件ID,消息处理函数名)。具体的可以查阅MSDN文档和之前写的博客。下面开始介绍几种常见的控件。0x00静态文本框原创 2017-07-27 13:43:08 · 662 阅读 · 0 评论 -
解决:CBitmapButtion在debug情况下,出现debug assertion failed的问题
在项目开发中,为了使得界面的UI美观一些,使用了CBitmapButton,但是出现了很奇怪的问题,在进行DEBUG的时候,总是弹出debug assertion failed的错误弹窗,而在RELEASE中可以正常运行,究其原因,可知源码中必然是出现问题的,在CBitmapButton类使用注意事项(主要是AutoLoad)文章中,我发现了我代码中出现的问题。在创建CBitmapButton原创 2017-09-19 14:27:15 · 863 阅读 · 0 评论 -
【解决方法】未申明的标识符,查找定义时出现解析多义性
时常会遇到这样的情况,在你编译工程文件的时候遇到这样的报错 |error C2065: "xxx";未声明的标识符| ,很奇怪,明明把包含该定义的头文件已经添加进工程中了,然后选中报错的地方摁F12,咦?怎么出现了解析多义性的弹窗,出现了多条相同名字的来源选项。遇到上述情况,不要慌,出错的原因其实很简单,你只是未在使用该报错变量或者函数的cpp文件中引用对其定义的头文件,故只需在源码的开头incl原创 2017-10-12 10:01:04 · 1557 阅读 · 0 评论 -
解决:error C2276:“&”: 绑定成员函数表达式上的非法操作
在VS2013中,遇到了ERROR C2276的报错,报错指向了一个BOOL类型的变量,因为其是用表示状态的作用,需要将该变量声明在类的外部,充当全局变量的作用。选中报错的变量,摁F12寻找其定义,发现指向了两个地方,一个是BOOL类型的变量,另一个是相同名字的函数,找到了问题的,所在改变其中两个中的任意一个的名字,再次编译,顺利通过。以上原创 2017-10-23 11:20:31 · 7967 阅读 · 0 评论 -
解决:ERROR C2470:"XXX" 看起来像函数定义,但没有参数列表;跳过明显的函数体
因项目需要自己封装了一个MFC的拓展DLL文件,在测试使用这个DLL的时候,编译过程中出现ERROR C2470的报错提示信息,,双击报错信息,指向了我在dll工程中定义的一个头文件(这里需要说明一下的是,我是将一个类封装为DLL的),即类的声明部分,如下:class OPCLIB_EXT_CLASS CWrapper{ //实现具体功能}右键OPCLIB_EXT_CLASS,查找原创 2017-10-14 15:58:52 · 3302 阅读 · 0 评论