VC++深入详解
文章平均质量分 92
Marcelxx
这个作者很懒,什么都没留下…
展开
-
第一章,Windows程序内部运行机制
一个应用程序窗口通常都包含标题栏、菜单栏、系统菜单、最小化框、最大化框、可调边框,还有滚动条。原创 2013-08-24 10:29:18 · 935 阅读 · 0 评论 -
MFC中OnPaint和OnDraw的区别
MFC中OnDraw与OnPaint的区别 OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。 OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_P转载 2013-09-04 23:12:31 · 1454 阅读 · 0 评论 -
第五章,文本编程
创建光标:1.文本编辑中如何创建光标?我们要调用CreateSolidCaret函数。在msdn中有两个函数,一个是CWindow的CreateSolidCaret,一个是CWnd的CreateSolidCaret,前者是ATL的类成员函数,后者是MFC的类成员函数,我们只要用MFC就可。void CreateSolidCaret( int nWidth,//光标宽,0表原创 2013-09-04 23:38:23 · 902 阅读 · 0 评论 -
GetSystemTime和GetLocalTime
GetSystemTime获得的时间是基于通用协调时(UTC, Universal Time Coordinated)。GetLocalTime获得的时间是基于本地时间的。如GetLocalTime获得的本地主机的时间是上午8时,当用GetSystemTime获取时,该时间是0时,注意这两个函数的区别原创 2013-09-17 10:40:00 · 1252 阅读 · 0 评论 -
MFC命令更新机制
MFC命令更新机制---------------------------------------------------------------------//转自 http://zhaoweizhuanshuo.blog.163.com/blog/static/14805526220104315834670/----------------------------------转载 2013-09-21 21:31:32 · 746 阅读 · 0 评论 -
第六讲,菜单编程
消息的捕获流程: 首先是CView最先捕获消息,如果在CView消息映射中没有对消息进行处理,则由CDoc进行捕获处理,否则则交由CMainFrame处理,否则交由CWinApp处理。消息的分类: 标准消息:除WM_COMMAND之外,所有WM_开头的消息,从CWnd派生的类,都可以接收到该类消息; 命令消息:来自菜单、加速键或工具栏按钮的消息原创 2013-09-21 23:36:39 · 656 阅读 · 0 评论 -
第七讲,对话框
在MFC中对资源的操作,通常都是通过对类的操作来完成的。模态对话框创建:DoModel();非模态对话框的创建:Create();原创 2013-09-23 00:06:56 · 658 阅读 · 0 评论 -
第七章
SDI的初始化过程 CWinApp --> CDocument --> CFrameWnd --> CView 。(要注意:SDI包含两个窗口,一个是框架窗口,一个是视图窗口,视图窗口覆盖在框架窗口之上,因此操作的时候,需要注意到底是在对视图窗口进行操作,还是在对框架窗口进行操作,SDI窗口是多个窗口的叠加)。改变窗口的外观 在窗口创建完成之前,可以利用P原创 2013-10-21 22:22:15 · 566 阅读 · 0 评论 -
PreTranslateMessage使用
PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在MFC之前处理某些消息时,常常要在这里添加代码. MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,我们可以改变MFC的消息控制流程,甚至可以作一个全新的控制流出来。只有穿过消息队原创 2013-11-03 11:52:34 · 1171 阅读 · 0 评论 -
CDC,CClientDC,CPaintDC,CWindowDC 比较区别
CDC,CClientDC,CPaintDC,CWindowDC 比较区别 MFC中的CDC,CClientDC,CPaintDC,CWindowDC的区别 CDC是Windows绘图设备的基类。 CClientDC: (1)(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC。 CPain转载 2013-11-19 11:34:52 · 851 阅读 · 0 评论 -
坐标空间
坐标系:Win32应用程序设计接口(API)使用四种坐标系空间:世界坐标系空间,页面空间,设备空间和物理设备空间。前两种是逻辑空间。物理设备空间即为我们经常使用的坐标系,使用GetWindowDC获取整个窗口,包括框架,标题栏,菜单栏等;使用GetClientDC获取窗口的客户区。转换:如果要在物理设备上绘制输出,Windows把一个矩形区域从一个坐标系空间拷贝到另一个坐标空间原创 2013-12-23 21:09:38 · 1143 阅读 · 0 评论 -
第四章,简单绘图
视类窗口(CView)覆盖在框架窗口(CFrameWnd)之上的,所有操作,包括鼠标单击、鼠标移动邓操作都只能由视类窗口捕获,框架窗口中收不到鼠标左键单击这一消息。 消息映射机制: 1,消息响应函数原型,在头文件CDrawView中。如: AFX_MSG之间声明消息响应函数原型。 //{{AFX_MSG(CDrawView) --注释宏原创 2013-09-01 23:15:31 · 750 阅读 · 0 评论 -
VC用法汇总
VC用法汇总(1)如何通过代码获得应用程序主窗口的指针?主窗口的指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2)确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行转载 2013-09-02 21:58:05 · 1584 阅读 · 0 评论 -
第三章,MFC框架程序剖析
单文档应用程序:CWinApp、CView、CWinFrame,CDocument。 CView是一个窗口类,CDocument不是一个窗口类,是一个文档类。 MFC提供了一种文档/视(Document/View)结构,其中文档就是指CDocument类,视就是CView类。考虑到要把数据本身和它的显示分离开,于是就采用文档类和视类结构来实现这原创 2013-08-24 16:06:54 · 611 阅读 · 0 评论 -
GlobalAlloc函数和new()的区别
1. GlobalAlloc函数和new()的区别。 1>new是标准的C++分配内存函数。GlobalAlloc是WIN下的API函数。 2>new分配内存同时会调用类等对象的构造函数。GlobalAlloc不回。 3>new分配的内存只能同进程使用,如(A进程new,B进程不能delete),GlobalAlloc能多进程使用,并删除。 2. Globa转载 2013-08-25 20:45:50 · 487 阅读 · 0 评论 -
第17章,进程间通信之剪贴板
进程间通信 - 剪贴板实现引子由于在启动一个进程后,操作系统会给这个进程分配 4GB 的私有地址空间,至于为何有 4GB 这么大,那得考虑进程的私有地址空间和实际物理内存地址空间之间的映射以及页交换等等细节问题了,这里不予讨论,从名字就可以知道,既然操作系统给每一个进程分配的是私有地址空间,自然,这段地址空间也只有这个进程自己才能访问了,不然还称为私有干吗呢?既然这段私有地转载 2013-08-26 14:49:10 · 745 阅读 · 0 评论 -
CreateProcess
CreateProcessWIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。目录函数原型参数返回值举例说明展开编辑本段函数原型 BOOL CreateProcess ( LPCTSTR lpApplicationName, LPTSTR lpCom转载 2013-08-26 00:11:35 · 1548 阅读 · 1 评论 -
第17章,进程间通信
当一个进程启动后,操作系统为其分配了4GB的私有地址空间,位于同一个进程中的多个线程共享一个地址空间,因此线程之间的通信非常简单。然而,由于每个进程锁拥有的4GB地址空间都是私有的,一个进程不能访问另一个进程地址空间中的数据。 进程通信的四种方式:剪贴板、匿名管道、命令通道和邮槽。剪贴板: 例如,在word文档中复制一份数据后,可以在其他文件中粘贴,这原创 2013-08-24 18:02:08 · 791 阅读 · 0 评论 -
判断一个线程是否执行结束以及获取线程退出码
HANDLE g_hThread = NULL; DWORD dw = WaitForSingleObject(g_hThread, 0); if(dw == WAIT_TIMEOUT) //线程正在运行{ TerminateThread(g_hThread, dwExitCode); //不建议强制结束 if(g_hThread !=原创 2013-08-28 15:17:33 · 12553 阅读 · 0 评论 -
Windows线程库
Win32 API 是Windows操作系统为内核以及应用程序之间提供的接口,将内核提供的功能进行函数封装,应用程序通过调用相关的函数获得相应的系统功能。MFC 是微软基础函数类库,由微软提供的,用类库的方式将Win32 API进行封装,以类的方式开发者。HANDLE 句柄是一种指向指针的指针。指针是一种内存地址,应用程序启动后,组成这个程序的各对象是驻留在内存的原创 2013-08-28 22:52:14 · 1396 阅读 · 0 评论 -
文件流操作
输入文件定位:seekg()是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。对于第一个参数,可以是正负数值,正的表示向后偏移,负的表示向前偏移。而第二个参数可以是:ios::beg:表示输入流的开始位置 定位到文件的开头使用seekg(0,ios::beg);ios::cur:表示输入流的当前位置ios::end:表示输入流的结束位置tell原创 2013-08-29 09:44:57 · 737 阅读 · 0 评论 -
窗口禁用和启用函数
在非MFC环境中如何使控件或者窗口禁用呢?起初是想通过发送消息来实现,但找来找去都木有找到控件禁用的消息(也是是博主木有找到的缘故),所以只能另辟蹊径,使用EnableWindow这个函数, 该函数的函数功能为:允许/禁止指定的窗口或控件接受鼠标和键盘的输入,当输入被禁止时,窗口不响应鼠标和按键的输入,输入允许时,窗口接受所有的输入。 下面是它的函数原型:BOOL Enab转载 2013-09-06 09:43:39 · 1285 阅读 · 0 评论 -
第四章,简单绘图之MFC中消息分类
MFC中的消息分类消息分类从不同的角度,有如下几种分类方式。一、从消息的发送途径上看,可以分为队列消息和非队列消息。队列消息和非队列消息Windows为当前运行的每个Windows程序维护一个“消息队列”。当通过鼠标或者键盘发生输入事件后,Windows将事件转换为一个“消息”,并将消息放入程序的消息队列中。而队列消息是指由Windows放入程序的消息队列中的消息,在程序消息循环中,队原创 2013-09-02 13:40:24 · 911 阅读 · 0 评论 -
第十三章,CArchive
MFC 提供CArchive类实现数据的缓冲区读写,同时定义了类对象的存储与读取方案。 以下对CArchvie 的内部实现作分析。 1.概述2.内部数据3.基本数据读写4.缓冲区的更新5.指定长度数据段落的读写6.字符串的读写7.CObject派生对象的读写1.概述 CArchive使用了缓冲区,即一段内存空间作为临时数据存转载 2014-01-20 15:02:40 · 816 阅读 · 0 评论