VC & MFC & WIN32
文章平均质量分 68
mood8125
这个作者很懒,什么都没留下…
展开
-
UML类图关系全面剖析
原文地址:http://blog.csdn.net/dylgsy/archive/2006/08/16/1076044.aspxUML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。而其中关联又分为双向关联、单向关联、自身关联;下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里。1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。转载 2006-12-12 16:48:00 · 833 阅读 · 0 评论 -
由GetDlgItem函数想到的
我们在调用CWnd::GetDlgItem()函数时,MSDN告诉我们:The returned pointer may be temporary and should not be stored for later use.中文意思就是:返回的指针可能是临时的并且最好不要保存起来放到以后用。猜测:返回的指针既然可能是临时的,那么可能是非临时的(永久的),最好不要保存起来放到以后用(有时候原创 2006-08-24 17:46:00 · 4220 阅读 · 2 评论 -
关于attach和detach的疑问
attach是把一个C++对象与一个WINDOWS对象关联,直到用detach则把关联去掉。 如果attach了以后没有detach,则C++对象销毁的时候WINDOWS对象跟着一起完蛋。 attach了以后,C++对象的指针和WINDOWS对象的HWND会有一个映射关系,其作用相当于你直接用一个C++对象去Create一个WINDOWS对象原创 2006-08-24 17:43:00 · 2997 阅读 · 0 评论 -
如何从HDC建立一个CDC类?
如何从HDC建立一个CDC类? 有时Windows API将会给你一个DC句柄,你可以通过它建立一个CDC类。例如:下拉式列表、组合框和按钮。通过hDC你将接收到绘制消息。下面是将HDC转换成你更熟悉的CDC的程序段。你也可以将该技巧用在其他任何MFC类和Windows句柄的转换中。 void MyODList::DrawItem(LPDRAWITEMSTRUCT lpDrawItem){原创 2006-08-24 17:00:00 · 1133 阅读 · 0 评论 -
堆和栈的区别
一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在转载 2006-12-12 18:54:00 · 943 阅读 · 1 评论 -
进程间通信的方法
进程间通信有以下方法Using named objects Waiting for multiple objects Waiting in a message loop Using mutex objects Using semaphore objects Using event objects Using critical section objects Using timer queues U转载 2006-12-12 18:52:00 · 1377 阅读 · 0 评论 -
Windows下的HEAP溢出及其利用
Windows下的HEAP溢出及其利用 一、概述 前一段时间ASP的溢出闹的沸沸扬扬,这个漏洞并不是普通的堆栈溢出,而是发生在HEAP中的溢出,这使大家重新认识到了Windows下的HEAP溢出的可利用性。其实WIN下的HEAP溢出比Linux和SOLARIS下面的还要简单得多,大家肯定已经都搞明白了,我来做是一个总结,以免自己将来忘了。由于缺乏这方面的资料及源代码,所有的分析结果都来自于反汇编和转载 2006-12-12 18:47:00 · 1219 阅读 · 0 评论 -
C++基本概念在编译器中的实现
对于C++对象模型,相信很多程序员都耳熟能详。 本文试图通过一个简单的例子演示一些C++基本概念在编译器中的实现,以期达到眼见为实的效果。 1、对象空间和虚函数 1.1 对象空间 在我们为对象分配一块空间时,例如: CChild1 *pChild = new CChild1(); 这块空间里放着什么东西? 在CChild1没有虚函数时,CChild1对象空间里依次放着其基类的非静态转载 2006-12-12 18:38:00 · 1841 阅读 · 0 评论 -
最小化文件之间的编译依赖
你进入到你的程序中,并对一个类的实现进行了细微的改变。提醒你一下,不是类的接口,只是实现,仅仅是 private 的东西。然后你重建(rebuild)这个程序,预计这个任务应该只花费几秒钟。毕竟只有一个类被改变。你在 Build 上点击或者键入 make(或者其它等价行为),接着你被惊呆了,继而被郁闷,就像你突然意识到整个世界都被重新编译和连接!当这样的事情发生的时候,你不讨厌它吗? 问转载 2006-12-12 18:35:00 · 871 阅读 · 0 评论 -
windows下unicode编程总结
UNICODE环境设置在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。 UNICODE编译设置:C/C++, Preprocessor difinitions 去除_MBCS,加_UNICODE,UNICODE在ProjectSetting/link/output 中设置Entry为wWinM转载 2006-12-12 16:44:00 · 771 阅读 · 0 评论 -
Virtual memory management
Virtual memory managementVirtual Memory Manager (VMM) Overview The Virtual Memory Manager (VMM) provides the virtual memory facilities that are used by the other parts of the system to implement t转载 2006-12-12 18:50:00 · 1727 阅读 · 0 评论 -
结构化设计的救命稻草-回调机制(callback回调函数)
摘要:开发模式的确立是软件开发过程中不可缺少的一部分,就目前来说,面向过程和面向对象是两种主要的设计方法,虽然面向对象OOP是比较流行的字眼,但不表示面向过程就一定好无作为,毕竟面向过程设计方法也有适合其应用的软件系统:以功能操作为主,扩展性要求不高,无需过多考虑复用以及软件的通用性能。那是不是面向过程的设计方法对于诸如系统框架扩展问题就丝毫没有办法了呢?按照面向过程的基本原则,划分系统功转载 2006-12-12 18:46:00 · 1417 阅读 · 0 评论 -
函数调用的区别__stdcall,__cdecl,__fastcall,thiscall,naked call
左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的修饰部分在后面将详细说明)。 _stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 2、C调用约定(即用__cdecl关键字说明)按从右至转载 2006-12-12 18:37:00 · 2206 阅读 · 1 评论 -
C++资源之不完全导引
1,前言 无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一书中指出“C++是最为难学的高级程序设计语言之一”,人们常将“之一”去掉以表达自己对C++的敬畏。诚然,C++程序设计语言对于学习者的确有很多难以逾越的鸿沟,体系结构的庞大,应接不暇并不断扩充的特性……除此之外,参考资料之多与冗杂使它转载 2006-12-12 16:58:00 · 1173 阅读 · 0 评论 -
解析C++中的内部连接与外部连接
解析C++中的内部连接与外部连接 作者: ZQGet 出处: 论坛 责任编辑: 方舟 [ 2004-05-27 17:04 ]在说内部连接与外部连接前,先说明一些概念。 1.声明 一个声明将一个名称引入一个 作用域; 在c++中,在一个作用域中重复一个声明是合法的 以下都是声明:转载 2006-12-12 16:49:00 · 1351 阅读 · 1 评论 -
设计模式精解之——Bridge 模式
0 引言0.1 目的 本文档给出设计模式之——Bridge模式的简化诠释,并给出其C++实现。0.2 说明 Project Design Pattern Explanation(By K_Eckel)转载 2006-12-12 18:36:00 · 1051 阅读 · 0 评论 -
BeginPaint和GetDC有什么区别?
1, 为什么WINDOWS要提出无效区域的概念呢?这是为了加速。因为BeginPaint和EndPaint用到的设备描述符只会在当前的无效区域内绘画,在有效区域内的绘画会自动被过滤,大家都知道,WIN GDI的绘画速度是比较慢的,所以能节省一个象素就节省一个,不用吝啬,这样可以有效加快绘画速度。 可见BeginPaint、EndPaint是比较“被动”的,只在窗口新建时和被原创 2008-02-27 18:24:00 · 1197 阅读 · 0 评论