孙鑫MFC学习笔记2:C++回顾】的更多相关文章

1.通常可以把实例与对象等同起来 2.函数重载是发生在同一个类中的 3.函数的覆盖是发生在父类与子类之间的(函数被覆盖后可以使用父类的类名加作用域操作符::) 4.含有纯虚函数的类叫抽象类,抽象类无法实例化对象,抽象类的派生类如果没有实现(覆盖)父类中的纯虚函数,则派生类也是抽象类 5.引用必须在定义的时候就初始化  思考:引用形参在调用的时候初始化 6.虚函数在声明的时候要加virtual,但是在源文件中实现的时候不要加virtual  思考:inline,__declspe(dllexpor…
1.CArchive类保存内存数据 2.CAchive类重载了>>与<<操作符,类似C++文件流 3.在OnNewDocument中通过SetTitle设置标题 4.字符串资源中IDR_MAINFRAME的第二个子串是文档标题 5.在App类初始化函数中将标题传进去 6.GetDocString获取字符串资源值 7.IDR_MAINFRAME字符串资源含义: 8.Doc类中的Serialize是保存/加载数据的函数 9.保存后打开同一文件不会进入Serialize函数(MFC认为文…
1.指向常量的指针 2.指针常量 3.C语言对文件操作是在缓冲区,在缓冲区满或文件关闭时写入文件 读取相同 4.fflush刷新缓冲区,使缓冲区数据写入文件 5.fseek改变文件指针偏移量 6.stell获取文件指针当前位置 7.rewind重新放置文件指针到开始处 8.写入换行会变成两个字节(回车与换行) 9.读文件时,如果以二进制读入,换行符与回车是两个字符,如果以文本方式读入,换行符与回车是两个字符 10.二进制文件和文本文件 11.文本方式与二进制方式 12.写入与读取应该用同一种方式…
1.画线方法 *1.捕获鼠标按下和弹起消息,获取两个点 *2.消息响应,画线 2.在CMainFrame类中的鼠标左键事件得不到响应的原因是CNameView覆盖了CMainFrame 3.注释宏 4.画线方法 *1.HDC *2.CDC(MFC封装) *3.CClientDC(不用显式释放资源) *4.CWindowDC(可以画到非客户区) 5.画线步骤 *1.获取DC *2.MoveTo到原点 *3.LineTo到目标点 *4.释放DC 6.CPen 构造函数参数: 线类型PS_SOLID等…
1.MFC中WinMain函数的位置在APPMODUL.cpp APPMODUL.cpp中是_tWinMain,其实_tWinMain是一个宏#define _tWinMain WinMain 2.全局变量(对象)的构造在入口函数之前 3.带有Afx前缀的函数是应用程序框架函数(Application Framework) 4.MFC程序运行过程 *1.产生全局对象 CNameApp类InitInstance函数,调用父类构造函数,做一些初始化工作并保存子类的指针 *2.进入WinMain函数…
1.HOOK拦截消息,设置越后的钩子优先级越高(钩子队列)2.SetWindowHookEx设置钩子    如果thread identifier为0或其他进程创建的线程,回调函数需要在动态链接库中声明3.CallNextHookEx调用下一个钩子4.UnhookWindowHookEx撤销一个钩子…
1.动态链接库 2.静态库和动态库 3.使用动态链接库的好处 4.动态链接库编译需要导出,使用需要导入 __declspec(dllexport),__declspec(dllimport) 5.动态链接库加载的方式 隐式:#pragma comment(lib, "../debug/dll1.lib") // 显示的声明要链接dll1.lib,隐式调用 显式:HMODULE hModule = ::LoadLibraryA("dll1.dll");…
18 1.容器和服务器程序 2.InvalidateControl重绘控件 3. 4.GetBackColor获取背景色 5.GetForeColor获取前景色 6.TranslateColor进行颜色转换…
17 1.进程间通信4种方式 2.OpenClipboard打开剪贴板 3.EmptyClipboard清空剪贴板,并把所有权分配给打开剪贴板的窗口 4.SetClipboardData设置剪贴板数据格式 5.GlobalAlloc从堆中分配内存 6.GlobalLock对全局内存对象加锁,返回内存指针 7.GlobalUnlock解锁内存对象 8.发送剪贴板步骤: OpenClipboard打开剪贴板 EmptyClipboard清空剪贴板 SetClipboardData设置数据类型 Glo…
16 1.事件对象 2.CreateEvent创建事件对象 3.SetEvent设置事件对象为通知状态 4.ResetEvent设置事件对象为非通知状态 5.InitializeCriticalSection.EnterCriticalSection.LeaveCriticalSection.DeleteCriticalSection操作关键代码段,分别是初始化.进入,离开.删除(释放)临界区 6.三种线程同步(互斥)区别 7.基于消息的异步套接字 8.AfxSocketInit函数加载1.1版…
15 1.进程地址空间 2.线程 3.CreateThread创建一个线程 4.CloseHandle关闭线程句柄,要在不再使用线程句柄的时候关闭,递减线程引用计数 5.编辑框默认不支持多行,需要打开多行支持 6.编辑框中的换行是\r\n…
1.OSI 2.TCP/IP与OSI对应关系 3.Socket 4.客户机/服务器模式 5.Windows Sockets 6.套接字类型 7.面向连接的socket编程 8.面向无连接的socket编程 9.WSAStartup加载套接字并且协商版本 10.MAKEWORD宏创建一个WORD 11.LOBYTE,HIBYTE分别取低字节与高字节 12.socket创建套接字 13.bind将一个本地地址与一个套接字关联起来 14.listen.accent监听,接受请求 15.send发送数据…
1.CPtrArray指针数组 2.CPtrArray返回void指针,需要做类型转换 3.View类中的OnPaint调用OnPrepareDC和OnDraw,如果覆盖OnPaint,就不会调用OnDraw(除非显式调用) 4.坐标空间 Coordinate Spaces and Transformations Win32®-based applications use coordinate spaces and transformations to scale, rotate, transl…
1.SetPixel在指定点设置像素 2.虚线.点线宽度必须为1 3.CColorDialog创建颜色对话框 4.需要设置CC_RGBINIT标志才能设置颜色对话框的默认颜色 5.CC_FULLOPEN标记可以打开完整颜色对话框 6.CreateFontIndirect通过LOGFONT创建字体 7.DeleteObject删除关联的对象 8.通过实例句柄判断是否关联对象 9.GetWindowRect获取屏幕坐标 10.ScreenToClient转换屏幕坐标为客户区坐标 11.WM_CTLC…
1.在窗口创建之前就应该修改窗口的样式 2.单文档应用程序会把文档名作为应用程序标题,应该去掉FWS_ADDTOTITLE属性,然后修改lpszName为标题 3.在窗口创建完成后,可以通过SetWindowLong改变窗口外观 4.GetWindowLong可以获取指定窗口信息 5.AfxGetInstanceHandle获取当前应用程序句柄 6.全局与CWnd中都有DefWindowProc函数,在类中使用要加作用域标识符 7.改变图标光标等可以通过在类中重新定义窗口类,并注册,把cs中的窗…
1.在按钮上没有字体设置,但是在对话框上有字体设置 2.让按钮进行消息响应 *1.创建按钮 *2.创建从按钮继承的类 *3.关联对象 3.属性页编程 *1.在对话框资源中新建属性页 *2.为属性页创建类 *3.添加属性列表 *4.显示属性列表(模态/非模态),DoModal,Create *可能需要SetWizardMode创建向导属性列表 *5.重写OnSetActive,在里面调用SetWizardButtons,改变按钮 4.单选按钮选择组,只有第一个选择组,直到遇到下一个组 *1.组内从…
1.DoModal创建模态对话框 2.Create创建非模态对话框(需要用ShowWindow显示出来) 模态:对话框显示,程序会暂停,直到对话框关闭 非模态:对话框显示,程序继续执行 3.对于模态对话框,点击确定/取消对话框被销毁,而对于模态对话框,只是被隐藏 4.对于模态对话框,需要在自己的类中覆盖OnOK这个虚函数,在OnOK中调用DestroyWindow 5.GetWindowText获取窗口文本 6.GetDlgItem获取对话框控件指针 7.SetWindowText设置窗口文本…
1.对菜单响应的顺序: 视类,文档类,框架类,应用程序类 2.消息的分类 3.CWnd继承自CCmdTarget类, 所以从CWnd派生出的类也可以接收WM_COMMAND消息 4.命令的消息路由 5.GetMenu获取指向菜单栏的指针 6.GetSubMenu获取指向子菜单的指针 7.CheckMenuItem设置复选菜单 8.SetDefaultItem设置缺省菜单项 9.分隔栏也要计算索引位置 10.一个子菜单中只有一个菜单项作为缺省菜单 11.SetMenuItemBitmaps设置菜单…
1.CreateSolidCaret添加一个插入符 参数:宽度,高度 如果设为0,就设为默认窗口边界的宽度和高度 2.GetSystemMetrics获取默认窗口边界的宽度和高度 3.Caret在创建后默认是隐藏的,需要调用ShowCaret()显示 4.GetTextMetrics获取当前字体信息 5.TEXTMETRIC结构体 6.宽度设为tmAveCharWidth/8 7.CreateCaret可以创建图形插入符 8.CString . CString可作为连接操作的结果而增大. · C…
1.MSG结构 hwnd:窗口句柄 message:消息类型 wParam & lParam:消息的附加信息(比如键值) time:消息被投递的时间 tip:typedef的作用是从变量类型区分变量用途 2.WinMain 3.程序开发步骤 4.设计窗口类 5.创建窗口.显示窗口.更新窗口 6.回调函数 tip:BeginPaint.EndPaint只能在响应WM_PAINT消息中使用,而GetDC不能在这里使用 tip:if语句中如果是常量与变量比较是否相等,应该把常量写在左边(可以避免把==…
孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modified Date:Dec.11st 2010 HQU ================================================================================= 程序&进程&线程 ================================…
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介: 具体详细细节可以参考离线文档 第一个MFC程序: 1.创建一个win32程序 2.设置使用MFC 3.添加类 #include <afxwin.h> class CMyFrameWnd : public CFrameWnd{ }; class CMyWinApp : public CWinAp…
学习孙鑫的那个深入详解C++视频时,有一处给编辑框空间改写窗口过程函数的例子,其中需要添加一个WM_INITDIALOG消息响应函数,但在类向导的消息栏下找不到WM_INITDIALOG消息.解决方法如下: 1.给你的对话框添加相应的映射类:2.在“类视图”中选中该对话框的映射类 :3.右键点击,选择“属性”,在属性视图中切换到“重写”选项,即可找到OnInitDialog,点击选出OnInitDialog()函数即可.(注:消息映射表中会多加一个registered,ON_REGISTERED…
写在前面的话:在学习孙鑫老师的VC++视频时,为了加深自己对知识的深入理解,就做了下面的笔记. 第一讲: 第二讲: 第三讲: 第四讲: 第五讲: 第六讲: 第七讲: 第八讲: 第九讲: 第十讲: 第十一讲: 第十二讲: 第十三讲: 第十四讲: 第十五讲: 第十六讲: 第十七讲: 第十八讲: 第十九讲:动态链接库 第二十讲:…
在学习孙鑫视频中,修改Tab顺序时,找不到VC6.0中提到的[Layout]->[Tab order]菜单项,但VC2010中可以用Ctrl+D调出来Tab顺序,或者[格式]->[Tab键顺序].…
教程简介 1.循序渐进 从Win32SDK编程开始讲解,帮助大家理解掌握Windows编程的核心 -- 消息循环机制. 2.通俗易懂 编程语言枯燥难懂,然而通过孙鑫老师形象化的讲解,Windows和MFC编程中的难点.重点,让你轻松掌握. 3.实战性强 编程中要注意什么?如何阅读出错提示?如何调试运行程序?如何排查错误,解决问题?通过孙鑫老师的一步步操作讲解,带你迅速掌握程序开发的全过程. 4.内容全面 Windows编程知识,VC++面向对象的编程思想,MFC编程,涵盖了软件开发中的绝大部分应…
在Visual Studio 2010中,即使代码是完完全全按照孙鑫视频中的敲,也会在出现error C2440,这是因为开发平台由VC6.0升级至VS2010,需要将原有的项目迁移.VS2010对消息的检查更为严格,以前在VC6.0下完全正常运行的消息映射在VS2010下编译不通过. 百度了解决方法如下(亲测可用): 例如:TestDlg.cpp中ON_REGISTERED_MESSAGE(WM_INITDIALOG, &CTestDlg::OnInitDialog):第一:把原来的消息函数返…
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程序猿的工作,将C++面向对象这一特点很好的表现出来. 用MFC可以用鼠标来编辑界面,管理各种控件,以及简化一些操作如字符串操作.文件操作.时间日期操作.网络操作.Windows系统操作.数据库操作…… 既然MFC是类库,那么她必然会用到类的特性:模板类.类的封装继承.虚继承.多态性等等. 然而就我的…
个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程序设计(第2版)>. 对于MFC本阶段的学习主要采用标题:MFC-01-Chapter0x:Title MFC系列学习较为繁琐,希望自己能够坚持. Come on baby don't be shy!…
作业要求: 按下鼠标右键画圆. 按下鼠标左键移动曲线. 丝毫没有思路..网上教程又比这个程序复杂100倍... 好吧 总算找到一个合适的了... 转载至:http://blog.chinaunix.net/uid-26275986-id-3868272.html 红色字部分是我自己的注解 学习MFC就像玩魔术,着实有趣,从传统的黑白命令行跳到熟悉的窗口界面,感觉还是很新鲜的.尽管MFC的知识更多是应用性的,但是自己还是想尽快掌握起来独立地写出图形接口的程序.今天学习的是如何绘制简单的图形,比如直…