
MFC
z215367701
用代码改变世界!
展开
-
关于实参和形参
C++中实参和形参结合的方式有三种:传值、引用和传地址。前面两种比较简单,不用多说,这里重点说一下传地址。 传地址一般都跟指针有关,当用指针进行动态存储分配的时候,是需要主动释放内存的,否则会出现内存泄漏。 假设实参是一个进行动态存储分配的指针,那么,一般情况下,释放实参指针或者释放形参指针都可以,因为实参和形参指向的是同一段内存。原创 2015-09-08 20:58:03 · 795 阅读 · 0 评论 -
C++智能指针梳理
参考:https://en.wikipedia.org/wiki/Memory_leak (维基百科,内存泄漏)https://en.wikipedia.org/wiki/Resource_leak (维基百科,资源泄漏)http://blog.youkuaiyun.com/dangercheng/article/details/12618161(内存泄露和野指针的概念)http://blog.csd转载 2016-11-06 11:59:17 · 479 阅读 · 0 评论 -
MFC学习笔记——多窗口之间的通信
具体步骤新建一个工程,名称为“MultiWindows”,使用 Unicode 编码。具体界面可以如下:首先添加一个新的窗口并将界面布局为下图,具体方法如下:在添加好窗口之后还要为这个窗口添加一个类文件,具体方法可如下:添加完成之后就可以添加消息功能了,这次有所不同的是,在以往的文章里都是只有一个窗口,而消息也都是在一个窗口内。如今变成了转载 2016-12-01 09:18:26 · 5120 阅读 · 0 评论 -
Error: must call SetScrollSizes() or SetScaleToFitSize()问题的解决
我的程序原来是基于CView的,但后来为了支持滚动功能所以按照网上的方法,手动把CView改为CScrollView(一些相应的处理都改了),但是程序运行后发生错误,调试发现程序进入下面的错误处理中。void CScrollView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo){ASSERT_VALID(pDC);#ifdef _D转载 2016-12-01 21:35:37 · 695 阅读 · 0 评论 -
VC++头文件中的条件编译问题(转载)
条件编译,是让编译器在条件满足时才进行编译,否则编译器就会忽略。 条件编译块,其语法结构为: #if [必须] #elif [可选] #else [可选] #endif [必须] 另外下面的形式是等价的: #ifdef (identifer) #if defined (identifer) #ifndef (identifer) #if !defined (ide转载 2016-12-16 22:13:52 · 797 阅读 · 0 评论 -
EnumDisplayMonitors—多屏显示的实现
在编程中要用到相关的结构体和函数,这些都已经包装好,在multimom.h头文件中,该头文件VC自带有。在要用的的地方包含该头文件,注意在包含前面要加上一句宏定义:#define COMPILE_MULTIMON_STUBS 几个重要的结构体和函数 EnumDisplayMonitors( ) 该函数对当前用户系统中所包含的显示器进行枚举。应用程序就是通过与该转载 2016-12-21 13:23:35 · 8878 阅读 · 0 评论 -
c++中const的使用详解
Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。1、定义常量(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。 TYPE const ValueName = value; const TYPE ValueNam转载 2016-12-21 15:26:58 · 2697 阅读 · 0 评论 -
vector容器类的使用
vector容器类的使用1. vector容器简介:vector向量容器是一种随机访问的数组类型,它提供了对数组元素的快速访问、随机访问,以及在序列尾部快速、随机地插入和删除操作。它类似于数据结构中的队列、数组和堆栈等概念。2. vector容器的定义2.1 头文件 #include2.2 命名空间 using namespace转载 2016-12-22 20:22:30 · 463 阅读 · 0 评论 -
STL list链表的用法详细解析
这篇文章是关于C++语言的一个新的扩展——标准模板库的(Standard Template Library),也叫STL。本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过!0 前言1 定义一个list2 使用list的成员函数push_back和push_front插入一个元素到list转载 2016-12-22 20:26:05 · 858 阅读 · 0 评论 -
C语言内存空间分布详解
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用来存放...转载 2017-07-20 16:54:43 · 10149 阅读 · 5 评论 -
如何检测应用程序调用了哪些DLL文件?
之前所用的检测工具是Dllshow,后来突然不能用了,VS以前有Depends,后来高级版本也没了。最近找到一种简单方便的方法,利用windowsx系统自带的功能。运行你想知道的应用程序,然后在进入dos窗口(开始->运行->command),输入命令:tasklist /m |more就可以看到你那个应用程序调用的dll文件了或者tasklist /m >c:\dll.txt就把结果保存原创 2017-08-31 10:13:41 · 16544 阅读 · 0 评论 -
如何在Win32下操作大于2G的文件
最近帮导师写一个点云播放器,需要读取5个左右的文本文档。主要想到了有两种方法来解决这个问题:一是将文件一次性读取到内存中,这种方法比较省事,但是读取过程时间太长,无法忍受;第二种方法就是逐帧读取的方式,这种方式若想实现任意帧的访问,则必须知道文件指针在文件中的位置。当文件小于2G时,使用fseek和ftell可以获取文件的大小。当文件大于4G时,使用_fseeki64和_ftelli64,如果原创 2017-08-31 15:50:33 · 1645 阅读 · 1 评论 -
关于头文件保护和变量重复定义的一点理解
之前一直都有一个困惑:既然头文件一般都有避免重复编译的预编译条件保护,那为什么在头文件中定义全局变量就会出现重复定义的错误呢?这个困惑持续了很久,一直到最近才算大概理解。现记录于此,也许理解的不正确,希望不吝指正。所谓头文件保护,指的是通过对宏的检测,来达到避免重复编译的目的。比如:#ifndef MY_HEAD_FILE #define MY_HEAD_FILE #endif,或是原创 2017-11-03 12:23:20 · 654 阅读 · 0 评论 -
VC获取并修改计算机屏幕分辨率(MFC)
//检测当前分辨率 int Width = GetSystemMetrics(SM_CXSCREEN); int Height = GetSystemMetrics(SM_CYSCREEN); DEVMODE lpDevMode0; lpDevMode0.dmBitsPerPel=32; lpDevMode0.dmPelsWidth转载 2016-11-04 09:37:45 · 695 阅读 · 0 评论 -
VC获取屏幕分辨率及大小相关
vc得到屏幕的当前分辨率方法:1.Windows API调用int width = GetSystemMetrics ( SM_CXSCREEN );int height= GetSystemMetrics ( SM_CYSCREEN );如果想动态自适应分辨率的变化,处理WM_DISPLAYCHANGE消息.2.获得分辨率BOOL EnumDisplaySetting转载 2016-11-04 09:28:19 · 676 阅读 · 0 评论 -
两种方法实现MFC 对话框最大化时控件也随比例最大化或者还原
方法一:单个控件ID操作第一步、在对话框类中(.h文件)定义如下变量和函数定义如下几个变量:[cpp] view plaincopyvoid ReSize(int nID); BOOL change_flag; float m_Multiple_height; float m_Multiple_width;转载 2015-12-10 22:37:55 · 809 阅读 · 0 评论 -
CString与string、char*的区别和转换
我们在C++的开发中经常会碰到string、char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆。下面详细介绍这三者的区别、联系和转换:各自的区别char*:char*是一个指向字符的指针,是一个内置类型。可以指向一个字符,也可以表示字符数组的首地址(首字符的地址)。我们更多的时候是用的它的第二的功能,来转载 2015-12-13 22:31:37 · 293 阅读 · 0 评论 -
Win32控制台程序标准的OpenGL流程
int main(int argc, char *argv[]){ glutInitWindowSize(500, 250); glutInitWindowPosition ( 140, 140 ); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE ); glutInit(&argc, argv);转载 2016-03-09 17:17:24 · 1232 阅读 · 0 评论 -
深入浅出MFC文档/视图架构之基本概念
深入浅出MFC文档/视图架构之基本概念引言 MFC引入了"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂Visual C++程序的关键。"文档/视图"中主要涉及到四种类: (1)文档模板:class CDocTemplate; // template for document creationclass CSingleDocTemp转载 2016-04-04 19:36:25 · 4272 阅读 · 0 评论 -
c/c++在windows下获取时间和计算时间差的几种方法总结
一、标准C和C++都可用1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒。测试程序如下:[c-sharp] view plain copy#include #include int main() { t转载 2016-05-02 13:44:03 · 752 阅读 · 0 评论 -
常用的函数:atoi,itoa,atof,_ttoi等
atoi---ASCII to integer,将字符串转换成整形,从数字或正负号开始转换,一直到非数字为止[cpp] view plain copy#include #include int main(void) { float n; char *str = "12345.67"; n =转载 2016-05-18 16:35:33 · 811 阅读 · 0 评论 -
如何给MFC对话框添加背景图片
一.创建项目文件-新建项目-MFC应用程序-该页面使用“基于对话框”-完成即可。注意:取消“使用Unicode库”,否则在使用AfxMessageBox会报错,没有一个可以转换的参数类型,要加AfxMessageBox(_T(“..”))。运行结果:二.添加背景Bitmap资源在“资源视图”中右键鼠标Dialog处,选择“添加资源”。在“转载 2016-06-24 17:46:49 · 35931 阅读 · 6 评论 -
在MFC中从中如何制作图形按钮
1、加载两张位图:IDB_BITMAP1, IDB_BITMAP22、添加一全按钮,IDC_BUTTON1, 属性->样式:选上"所有者绘制"和"位图"。3、在对话框类中添加成员变量,类型为CBitmapButton ,变量名为m_BitmapBtn,全局变量或局部变量均可。4、在对话框类的DoDataExchange函数中添加代码,DDX_Control( pDX, IDC_BU转载 2016-06-24 17:47:59 · 1244 阅读 · 0 评论 -
MFC中stdafx.h是什么意思?
Standard Application Framework Extensions(标准应用程序框架的扩展)。没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理转载 2016-06-16 20:16:44 · 1453 阅读 · 0 评论 -
extern "C" _declspec(dllexport)浅析
extern "C" extern "C"使得在C++中使用C编译方式成为可能。在“C++”下定义“C”函数,需要加extern “C”关键词。用extern "C"来指明该函数使用C编译方式。输出的“C”函数可以从“C”代码里调用使用微软专用的_declspec (dllexport) cpp文件在编译为OBJ文件时要对函数进行重新命名,C语言会把函数name重转载 2016-06-19 13:34:11 · 690 阅读 · 0 评论 -
OpenGL实现鼠标绕任意轴旋转/平移/缩放
刚刚学opengl的童鞋肯定有个苦恼的麻烦,只会绘制一个三角形,但是想像那些三维软件那样用鼠标控制视角还是有点困难的,所以我就封装了一个场景漫游类:RoamingScenceManager,这个类使用非常方便,跟界面没有半毛钱关系,可以在Qt,原生OpenGL,MFC用,下面的内容是简单介绍怎么用,然后就给出上述三个环境的具体例子。 RoamingScenceManager类转载 2016-08-23 18:37:09 · 7811 阅读 · 2 评论 -
关于VS单步调试乱跳问题
最近一段时间一直在调程序,被一个问题所困扰:Debug模式下,单步调试时,代码指示器到处乱跑,并没有按照行号逐一运行。事实上,这只是假象·,代码还是在逐行运行。造成这种假象的原因是文档中出现了一行写了多行代码的情况,即一行出现了多个分号。保持一行只写一行代码的好习惯!原创 2018-01-11 16:08:56 · 8430 阅读 · 4 评论