MFC
dongzhiquan
吉大计算机毕业,南京,程序员.
展开
-
static静态变量的理解
static静态变量的理解静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结转载 2009-07-21 17:26:00 · 2227 阅读 · 0 评论 -
标准C++类型转换符
C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这转载 2009-08-05 13:16:00 · 432 阅读 · 0 评论 -
C++的“私有”是针对类而言的还是针对类的实例而言的?
问题的起源: 我在看新版的《C++编程思想》的时候,看到拷贝构造函数章节处大致有这么一,非常不解: Class A { int n; //私有的n public: A(const A& a): n(a.n){} //为什么可以调用a.n,n明明是私有的 } 另外在重载=操作符的时候也有这样的问题。 后来得到的答转载 2009-08-25 10:12:00 · 520 阅读 · 0 评论 -
C#访问同类实例的私有成员代码
C#访问同类实例的私有成员代码大家都知道,一个类的私有成员只能在他的内部访问!但是不知道大家注意到没有,实际上在C#中一个类的实例是可以访问同一个类的另外一个实例的私有成员的。请看这段简单的代码public class MyClass { private int i = 0; public void Function转载 2009-08-25 10:22:00 · 661 阅读 · 0 评论 -
利用关键代码段实现多线程同步
利用关键代码段实现多线程同步关键代码段又叫临界区,是指一个小代码段,在代码能够执行前,它必须对具有对资源的独中权。如一次只能一个人打电话的公用电话厅,开始时要建个电话厅(初始化临界区:InitializeCriticalSection),一个人打电话(EnterCiticalSection),打完电话离开,便于别人打(LeaveCriticalSection),电话原创 2009-08-28 18:42:00 · 731 阅读 · 0 评论 -
《c++程序调试实用手册》
开篇十个问题问题1 作为一个c/c++程序员,你的所有子程序代码都封装在函数体内,你知道还有其他类型的子程序否(与c/c++不同,许多语言还有另外一种类型的子程序成为过程)?问题2 你是否知道过程子程序和函数子程序之间的所有区别?问题3 你是否学习过如何解析一个表达式,考虑到操作符的优先级?问题4 你是否知道属于先行转载 2009-08-30 21:58:00 · 1125 阅读 · 0 评论 -
关于C++中的内联函数(inline)
在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导转载 2009-09-03 23:46:00 · 603 阅读 · 0 评论 -
关于Debug Release
关于Debug&Release在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当头一棒啊,可是疼归疼,问题总要解决,下面将讲述一下我的几点经验,看看是不是其中之一:1. 变量。 大家都知道,debug跟release在初始化变量时所做的操作是不同的,debu原创 2009-09-07 22:38:00 · 729 阅读 · 0 评论 -
什么时间调用 UpdateData() --MFC函数
UpdateData,顾名思义,是用来刷新数据的。 UpdateData(TRUE) -- 刷新控件的值到对应的变量 UpdateData(FALSE) -- 拷贝变量值到控件显示例如,窗口中用 DDX_Text(pDX, IDC_EDIT1,m_usercode);将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_userc转载 2009-09-23 23:30:00 · 1003 阅读 · 0 评论 -
委托、事件和回调函数这3者之间到底是什么关系
简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 为什么要使用回调函数? 因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。 回调函数:就是指向转载 2010-03-18 23:44:00 · 942 阅读 · 0 评论 -
如何从DLL中生成LIB文件
如何从dll文件导出对应的lib文件? Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。 1、在命令行执行: dumpbin /exports yourdll.dll >转载 2009-08-04 13:46:00 · 2026 阅读 · 1 评论 -
com学习笔记(2)基本的com接口-QueryInterface的实现
QueryInterface 接上篇 一.COM接口的开始IUnknown com起于接口,又归于接口.com之所以是com,是因为其继承了一个名为IUnknown接口.IUnknown接口是一个非常有趣的名字.我们第一次看到这个接口,都会非常好奇,名字的由来开发内部肯定是有故事的,或者他们想不出啥好名字也是有可能的.下面我们来看一下IUnknown接口定义转载 2009-08-05 17:08:00 · 1432 阅读 · 0 评论 -
VC中的DoDataExchange函数解析
void CRegisterDialog::DoDataExchange(CDataExchange* pDX)...{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CRegisterDialog)DDX_Control(pDX, IDC_INCOM转载 2009-07-27 15:29:00 · 632 阅读 · 0 评论 -
MFC中动态创建一个控件
在View类中动态创建一个Edit控件如下: editT1.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,CRect(0,0,50,20),this, IDC_EDITT1); 现在想实现类似对话框中的数据交转载 2009-07-27 15:57:00 · 1109 阅读 · 0 评论 -
HDC,CDC,CWindowDC,CClientDC,CPaintDC基础
首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 在c++ 编程中常会见到HDC,C转载 2009-07-27 13:30:00 · 758 阅读 · 2 评论 -
MFC中LineTo函数的作用及用法(图形学中使用过的)
Normal 0 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Style Defini转载 2009-07-27 12:40:00 · 5147 阅读 · 0 评论 -
VC6中的文件类型
.clw 支持ClassWizard .ncb 支持ClassView .opt 保存工作空间的配置 .aps 支持ResourceView .bsc 浏览器信息文件 .dsp 项目文件 .dsw 工作空间文件 .mak 外部的创建文件 .plg转载 2009-07-28 08:53:00 · 589 阅读 · 0 评论 -
C++中添加自定义消息的响应 (BEGIN_MESSAGE_MAP ON_MESSAGE)
BEGIN_MESSAGE_MAP 把消息和函数指针联系起来 1首先要在窗口类的cpp文件手动添加消息响应机制,ON_MESSAGE(ID,Handler) LRESULT Handler(WPARAM,LPARAM);//响应的函数BEGIN_MESSAGE_MAP(CShellDlg, CDialog) /转载 2009-07-30 16:51:00 · 1393 阅读 · 1 评论 -
COM编程中的接口查询QueryInterface的实现原理
我们都知道,COM组件编程中,QueryInterface实现的接口之间的查询,通过这个接口,我们可以获取该组件中其他的接口。但是,QueryInterface实现的原理,并不是大家都很清楚,也没有哪本书仔细讲了这点。我将个人心得写下来,供有需要的人查看。首先,我们看一下基本的COM实现。一般来说,COM是 通过多继承实现多个接口,如下图而对应的QueryInterface实现转载 2009-08-04 12:50:00 · 800 阅读 · 0 评论 -
Getbuffer ReleaseBuffer Cstring
getbuffer是为了让你使用CString类中,保存字符串缓冲区的那块指针. 至于releasebuffer,在MSDN中有这样一句话. If you use the pointer returned by GetBuffer to change the string contents, you must转载 2009-08-03 14:34:00 · 801 阅读 · 0 评论 -
CMAP原理及其在MFC中的实现(MAP模板没有顺序遍历的功能)
会用CMap了,其他的基本也就会了,很容易理解。 映射表类(CMap)是MFC集合类中的一个模板类,也称作为“字典”,就像一种只有两列的表格,一列是关键字,一列是数据项,它们是一一对应的。关键字是唯一的,给出一个关键字,映射表类会很快找到对应的数据项。映射表的查找是以哈希表的方式进行的,因此在映射表中查找数值项的速度很快。举个例子来说吧,公司的所转载 2009-08-05 15:51:00 · 2842 阅读 · 0 评论 -
ERROR LNK2001
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于 编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时, 编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不 明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非 常困难。 初学者在学习VC+转载 2009-08-06 14:08:00 · 486 阅读 · 0 评论 -
静态加载dll的问题
钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时在钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。 在本程序中我们需要捕获在任意窗口上的键盘输入,这就需要采用全局钩子以便拦截整个系统的消息,转载 2009-08-04 14:38:00 · 757 阅读 · 0 评论 -
Dll原理和使用
讲的实在是好,必须收藏的如果想要与其它进程共享内存,必须使用内存映射文件或者声明一个共享数据段MFC中的DLLNon-MFC DLLRegular DLLExtension DLL转载 2010-08-31 23:18:00 · 1146 阅读 · 0 评论