mfc笔记(一)

首先声明,这是我的个人笔记,所以,比较简略,看的吕鑫的C++视频,针对MFC的课程,随手写的笔记,所以,很多地方,,一般看不懂,参考文档是MSDN,仅供个人参考复习用。

---------------------------------------------------------------------------------------------------------------------------------------------------

1.设计窗口类wndclass
style = ..|..设计
style& ~ ...去除
回调函数指针 函数名可以作为函数指针,回调函数代码需要自己编写
额外的内存
当前应用程序的实例 形参
图标 装载图标loadicon(null,默认图标)创建图标 createicon
光标 类似于图标使用
画刷的句柄 getstockobject 返回不同颜色的画刷,设置背景 强制类型转换
常量字符串 菜单名
常量字符串 类名
2.注册窗口类
3.创建一个窗口
定义一个句柄 ,用createwindow(注册的类名(必须和设计类的类名一致),标题栏,窗口的类型(可以改变窗口类型),窗口的坐标(可以用默认值),窗口的高度和宽度(可以用默认值),父窗口的句柄,menu的句柄,该实例,多文档的句柄)
4.显示窗口
5.更新窗口,刷新一次窗口
6.getmessage从消息队列中读信息
获取哪个窗口的消息
最小的消息值,对消息范围进行过滤
最大的消息值
translatemessage
转换翻译消息 对取到的消息进行转换,并送到消息队列中
dispatchmessage
将收到的消息传到窗口的回调函数即系统
7.窗口回调函数(窗口过程函数)
wndclass中的第二个参数
dispatchmessage会调用该函数 , 一旦有消息产生就会调用该函数
messagebox弹出消息框
HDC DC=device context 设备上下文
hdc 设备上下文句柄
getdc()获取dc的句柄,某个窗口的句柄 textout文本输出函数 strlen获取字符串长度
releasede 释放dc,否则会造成内存泄漏
窗口从无到有会进行窗口的重绘
beginpaint进行重绘 该函数有一个结构体的指针,她会自动填充该结构体,所以无需关心
endpaint结束重绘
窗口销毁和程序销毁是不一样的
winmain函数退出,程序就退出了
缺省处理:default语句并不可少,让系统进行默认处理
8.CALLBACK _stdcall
WINAPI _stdcall
WINAPIU _cdecl
默认是_cdecl的函数调用模式,所以当想要用stdcall调用模式的时候,需要再函数前面显式的写上CALLBACK, 模式主要是和堆栈方式,编译啥的有关

C++基础:
1.结构体最后要加;类最后要加分号;
2.结构体中可以定义函数
将结构体换为class
class ..
{
public:
int i;
int y;
void output()
{
...
}
}
结构体是一种特殊的类,类中缺省情况为private,结构体中缺省情况是public
构造函数 没有返回值,名字为类名,用于初始化
析构函数 ~加构造,生命周期结束的额时候调用,来进行对象释放。
构造函数可以有参数,而析构函数不能有参数,而且析构函数只能有一个
当程序用delete删除堆内存对象的时候,也会调用析构函数
this指针,是指向对象本身的,而不是指向类

继承:
用“:public。。。”
protected 方法可以被子类访问,但不可以被外界访问,被保护着

对于子类是以哪种方式来继承父类,影响的是子类的对象能够调用的方法,例如“: private...”则子类的对象都不能调用父类任何权限的方法,因为都被子类变为了private了

在子类构造函数中向父类带参数的构造函数传递参数 fish():animal(300,400){}
也可以在构造函数上进行常量的初始化fish:animal(400,300),a(1)
const int a;
函数重载发生在一个类中,函数覆盖发生在子类与父类之间,如果不想覆盖而是增加的话,可以先写上父类::函数,然后再写特色的

全局函数:
向上转型可以是默认的
virtual函数:虚函数
采用的迟绑定技术,看看到底是哪个对象(父类还是子类的对象)调用(多态性)
如果子类调用,如果子类有该函数,则调用子类,子类没有则调用父类的

纯虚函数:
virtual void breathe()=0;没有实现函数,所以该类不能产生对象,只能作为基类,为派生类服务了

该类的子类必须实现该函数才可以产生对象

补充一个程序例子,

引用:
变量的别名,而且必须在定义的时候初始化,而且只能在定义的时候初始化,始终指向初始化的那个变量。
引用和指针的不同:指针变量本身要占据内存空间,指向地址
引用不需要占据内存地址,就相当于给变量起了个别名。
引用大多用在函数传参的情况,使用起来比指针清晰


把类的定义和内部函数的声明放在头文件中,将定义放在源文件中,用作用域来实现拿出来
实现
返回值 。。::。。。(。) 当然构造函数没有返回值

《》到系统目录中找头文件 ,“”双引号先搜索当前目录再到系统目录

解决头文件重复包含的问题
#ifndef ...
#define ...
......
#endif
在每一个.h中写

时间: 2024-12-29 00:34:31

mfc笔记(一)的相关文章

MFC笔记之多线程聊天室

新手刚接触,跟着孙鑫老师视频一步一步的做.从VC6.0到VS2010好像并不是那么顺利,下面记录下一点收获. 网络编程的一般步骤: 1声明套接字版本(WSAStartup);2创建套接字(socket);3绑定套接字(bind);4发送接收(sendto/recvfrom);5关闭(closesocket) 第1~3步代码如下: 1 CString error; 2 WORD wver; 3 wver=MAKEWORD(1,1); 4 WSAData data; 5 if(0!=WSAStart

MFC笔记6

1.VS中显示行号 工具 -> 选项 -> 文本编辑器 -> C/C++ -> 行号 2.VS中调整字体大小 工具 -> 选项 -> 环境->字体和颜色 3.VS中调试编译按钮 在VS工具窗口右键->生成 4.消息对话框 1)MessageBox(_T("你好!"),MB_OK); 2)MessageBox(_T("你好!"),_T("你好!"),MB_YESNO);

MFC笔记5

1.MessageBox()             引用自(http://www.douban.com/note/40199603/) 一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口. Text:欲显示的信息字符串. Caption:对话框标

MFC笔记2

1.Create()函数创建,该函数原型如下: BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); lpszCaption是按钮上显示的文本:dwStyle指定按钮风格,可以是按钮风格与窗口风格的组合,取值有: 窗口风格: ·WS_CHILD 子窗口,必须有 ·WS_VISIBLE 窗口可见,一般都有 ·WS_DISABLED 禁用窗口,创建初始状态为灰色

MFC笔记1

1.在对话框文档中定义两个定时器,每间隔5秒弹出一个消息框提示“定时器1”,每隔5秒弹出一个消息框提示“定时器2” BOOL CKongjianDlg::OnInitDialog(){ CDialog::OnInitDialog(); SetTimer(1,5000,0); SetTimer(2,5000,0); return TRUE; // return TRUE unless you set the focus to a control} 在resourceView中先定义好窗口的定时器消

MFC笔记

//插入菜单 HMENU m_hMenu; 定义变量 m_hMenu = LoadMenu(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MENU1)); //变量关联菜单 ::SetMenu(this->GetSafeHwnd(), m_hMenu);//插入菜单

《MFC 笔记》 Part5 C++ 资源大全中文版

 Part5 C++ 资源大全中文版 参考网址:https://github.com/jobbole/awesome-cpp-cn 更多其他资源:https://github.com/jobbole?page=1 标准库 C++标准库,包括了STL容器,算法和函数等. C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 C POSIX library : POSIX

[收藏夹整理]VC部分

c++多线程(一) C++11 多线程 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点) 鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员) [笔记]VS2010 LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 的解决方法 VC++/MFC程序图标更改方法以及修改程序标题 超级简单啦 MFC:Tab Control 控件的使用 给VS2008/VS2010 MFC项目添加启动画面 VC程序中Windows XP风格程序界面的实现 MF

MFC消息映射的原理:笔记

多态的实现机制有两种,一是通过查找绝对位置表,二是查找名称表:两者各有优缺点,那么为什么mfc的消息映射采用了第二种方法,而不是c++使用的第一种呢?因为在mfc的gui类库是一个庞大的继承体系,而里面的每个类有很多成员函数(只说消息反映相关的成员函数啊),而且在派生类中,需要改写的也比较少(我用来做练习的程序就是那么一两个,呵呵).那么用c++的虚函数的实现机制会导致什么问题呢?就是大量虚表的建立使得空间浪费掉很多. 嗯-怎么办呢?于是各大c++名库(比如QT,MFC,VCL-)在消息映射的实