- 博客(18)
- 收藏
- 关注
转载 C++类的静态成员变量一定要定义(分配内存)
我们知道C++类的静态成员变量是需要初始化的,但为什么要初始化呢。其实这句话“静态成员变量是需要初始化的”是有一定问题的,应该说“静态成员变量需要定义”才是准确的,而不是初始化。两者的区别在于:初始化是赋一个初始值,而定义是分配内存。静态成员变量在类中仅仅是声明,没有定义,所以要在类的外面定义,实际上是给静态成员变量分配内存。可以通过以下几个例子更形象的说明这个问题://test.c...
2019-12-30 16:27:01
171
原创 c++ 静态函数
1、对象与对象之间的成员变量是相互独立的.要想共用数据,则需要使用静态成员或静态方法2、只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量.(因为静态成员变量在对象创建之前就已经被分配了内存空间)3、静态成员变量虽然在类中,但它并不是随对象的建立而分配空间的,也不是随对象的撤销而释放(一般的成员在对象建立时会分配空间,在对象撤销时会释放...
2019-12-30 16:09:24
36
原创 C++中static类型的成员变量不能在构造函数中定义
类中的静态成员变量的初始化必须在类外实现!!类的定义是在头文件中,如果类的成员变量是static,static声明的成员变量是说明这个变量是属于整个类的,而不是某个对象的(除了单例模式,一个类都可以定义无数个对象),所以对static成员变量的定义/初始化不可以放在构造函数中(定义对象时才会调用的函数),只能放在类对应的源文件中函数之外的全局位置。在CUtilityTool类的.h文件:...
2019-12-30 15:38:17
357
原创 GDI绘图中,SelectObject()函数作用
SelectObject()作用:选入一个GDI对象。同时会返回(选出)先前选入设备上下文的同类的GDI对象。CPen newPen;CPen *oldPen;newPen.CreatePen(PS_SOLID,2,RGB(192,192,192));//创建对象oldPen = pDC->SelectObject(&newPen);//将画笔选入设备描述表,并保存旧...
2019-12-24 09:59:18
130
原创 AFX_VIRTUAL
//{{AFX_VIRTUAL、/{{AFX_MSG、//{{AFX_MSG_MAP、//{{AFX_DATA_INIT 我们看到很多这样打头的代码,其中典型的一个,在你应用程序的 CApp 头文件中。对于类向导来说。这个符号才是有意义的。它是一个消息处理函数的前缀,类向导生成的消息函数,分发函数,事件响应函数都以这个为前缀.如果去掉了,向导将不能识别。些有规律的注释是类向导自动生成的格式...
2019-12-12 17:32:01
56
转载 自绘控件--对应的不同的消息,在对应的消息响应函数中绘制
1、按钮、标签、列表框(ListBox)、组合框(ComboBox)、菜单等,在父窗口的WM_DRAWITEM消息里绘制2、列表视图(ListView、ListCtrl)在WM_NOTIFY消息的NM_CUSTOMDRAW里绘制没有这些消息的再考虑WM_PAINT3、如果上述消息不能实现,所有窗口、子窗口都有WM_ERASEBKGND(绘制背景)、WM_PAINT(绘制内容)消息4、要...
2019-12-07 11:30:53
45
转载 子类化方法自绘按钮
1.新建一个基于对话框的MFC程序。2.在工程中添加一个新类CMyButton,基类选择CButton。3.然后转至新生成的MyButton.h头文件中,将鼠标放在类名CMyButton上点击一下,打开“属性”窗口,在“消息”按钮下为此类添加WM_LBUTTONDOWN,WM_LBUTTONUP消息,并重写DrawItem虚函数(这个函数是重绘按...
2019-12-06 13:39:06
71
原创 MFC 单文档应用程序 基本框架结构
本文将剖析基于MFC的框架程序,探讨MFC框架程序的内部组织结构,MFC是微软为了简化程序员的开发工作而设计的一套c++类集合,利用这些类有效地帮助程序员完成windows应用程序开发。主要类之间的关系 CTestApp类处理消息,将收到的消息分发给相应的对象。 CMainFrame是视图CTestView的父窗口,视图CTestView就显示在CMainFrame的客户区中。 ...
2019-12-05 15:00:27
491
原创 MFC视图View
从word中的“视图”去理解:这里包含了:全屏显示视图、阅读版式视图、写作模式视图、页面视图、大纲视图、Web版式视图。1.阅读视图:会隐藏一切多余的工具栏,常用工具栏里的阅读按钮,可以切换到阅读板式视图。关闭也一样,在工具栏里点击关闭就可以。2.页面视图是文档或者其他对象的一种视图。3.大纲视图用缩进文档标题的形式代表标题在文档结构中的级别。...
2019-12-05 13:44:14
52
原创 MFC:;父窗口、子窗口,窗体、窗口
一、每一个窗体form都是一个父窗口,它不是其他任一个窗体的子窗口。窗体上的所有控件,按钮等就是窗体的子窗口。一个窗口(除了窗体)既可能是父窗口,也可能是子窗口。比如窗体里面有一个frame,frame里面的控件就是frame的子窗口,但frame同时也是窗体的子窗口。就像容器里面装着容器,最大的那个容器就是窗体,每一个容器里面的东西就是其子窗口。二、窗口:概念更大,可以包含窗体...
2019-12-05 13:27:34
149
原创 MFC自绘控件
一、MFC自绘控件要了解Windows下的绘图操作,实现界面的美化,就必须了解MFC封装的设备环境类 和图形对象类。1.1 设备环境类MFC中的CDC类封装了Windwos API中的大部分的画图函数。CDC的常用的操作函数包括:*颜色和颜色调色板函数绘图属性函数映射函数坐标函数*区域函数剪切函数线输出函数简单绘图函数椭圆和多边形函数*位图函数...
2019-12-04 17:25:43
123
原创 焦点、光标位置、鼠标位置 区别
一、焦点:光标被激活的位置光标位置:小竖线/横线的位置 现在大部分的光标都为一个小竖线,规则的闪动; 而在DOS下有些光标则是短短的小横线,同样规则的闪动; 现用的windows光标是一个图像,可以是动态的也可以是静态的,在不同情况下样子也不同。鼠标位置:移动鼠标停下时的所在坐标位置二、焦点 概述当...
2019-12-04 14:54:57
358
原创 设备上下文/设备环境/显示场景
CDC类定义的是:设备上下文/设备环境对象 的类。通过CDC对象的成员函数:进行所有的绘图。CDC是MFC的DC的一个类;hDC是DC的句柄(一个类似指针的数据类型);MFC类的前缀都是C开头的H开头的大多数是句柄。使用CDC对象时要构造它,然后调用与它平等的、使用设备上下文的Windows函数的成员函数。...
2019-12-04 13:46:35
28
原创 PreCreateWindow()和OnCreate()、Create()的区别
1、在窗口的CWnd::Create()/CreateEx()调用返回前:要先调用PreCreateWindow(),对Create()/CreateEx()中的风格参数进行预处理设置。之后调用OnCreate进行实际的窗口创建,返回后,Create()/CreateEx()也返回,窗口创建结束。CWnd::Create()/CreateEx(){ PreCreateWi...
2019-12-03 16:23:44
63
转载 MFC单文档程序中C**APP文件的ProcessShellCommand(cmdInfo)函数功能解释
在我们用向导创建MFC应用程序时,在App::InitInstance()中总会出现下面这样的代码到底是什么意思呢,我差了很多资料终于使其漏出庐山真面目。CCommandLineInfo cmdInfo;//定义命令行ParseCommandLine(cmdInfo);//解析命令行// 调度在命令行中指定的命令。如果// 用 /RegServer、/Register、/Un...
2019-12-03 15:56:36
68
原创 MFC API:AfxRegisterWndClass(注册窗口类)
如果程序主窗口不是由CframeWnd派生而来,而是由CWnd派生而来,那么在创建窗口的时候,必须注册自己的WNDCLASS,因为CWnd::CreateEX不接受NULLWNDCLASS名称。这种情况下,注册WNDCLASS样式半建立窗口有两种方式。方式一,定义一个WNDCLASS结构实例,并对每个字段进行初始化,然后调用::RegisterClass或者MFC的全局函数AfxR...
2019-12-03 14:40:35
462
空空如也
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝