c/c++
文章平均质量分 88
yuntongsf
这个作者很懒,什么都没留下…
展开
-
通往WinDbg的捷径(一
原文:http://www.debuginfo.com/articles/easywindbg.html译者:arhat时间:2006年4月13日关键词:CDB WinDbg 导言你钟情什么样的调试器?如果你问我这个问题,我会回答是“Visual Studio + WinDbg”。我比较喜欢Visual Studio那朴实无华且易操作的接口,更喜欢它能迅速把我需转载 2009-08-21 14:02:00 · 675 阅读 · 0 评论 -
以程序的方式操纵NTFS的文件权限
WindowsNT/2K/XP版本的操作系统都支持NTFS格式的文件系统,这是一个有安全性质的文件系统,你可以通过Windows的资源管理器来设置对每个目录和文件的用户访问权限。这里我就不对NTFS的安全性进行讲述了,我默认你对NTFS的文件目录的安全设置有了一定的了解。在这里,我将向你介绍使用Windows的API函数来操纵NTFS的文件权限。 一、 理论和术语转载 2009-08-28 13:46:00 · 702 阅读 · 0 评论 -
使用__FILE__和__LINE__定位错误
[前言:使用__FILE__和__LINE__来定位错误已经屡见不鲜,然而其中一些道理又有几个人仔细探究过。本文参考了Curtis Krauskopf的一篇名为Using __FILE__ and __LINE__ to Report Errors的文章,希望达到解惑之效。]问题:当运行时错误产生时,我怎样才能得到包含C++文件名和行号的字符串信息?回答:在C++中的__FILE__预转载 2009-08-29 16:52:00 · 1427 阅读 · 0 评论 -
c语言 printf()输出格式控制
Printf()输出格式控制 [学习笔记--Printf()输出格式控制]hzh-fa 发表于 2006-8-12 12:26:00 1.转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d转载 2009-08-29 17:59:00 · 6483 阅读 · 0 评论 -
extern 用法小结
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char转载 2009-08-29 23:59:00 · 827 阅读 · 0 评论 -
堆和栈的区别
一般认为在c中分为这几个存储区1栈 - 有编译器自动分配释放2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束释放4另外还有一个专门放常量的地方。 - 程序结束释转载 2009-06-28 15:29:00 · 504 阅读 · 0 评论 -
WinSocket模型的探讨——完成端口模型(一)
众所皆知,完成端口是在WINDOWS平台下效率最高,扩展性最好的IO模型,特别针对于WINSOCK的海量连接时,更能显示出其威力。其实建立一个完成端口的服务器也很简单,只要注意几个函数,了解一下关键的步骤也就行了。这是篇完成端口入门级的文章,分为以下几步来说明完成端口: 函数常见问题以及解答步骤例程1、函数:我们在完成端口模转载 2009-09-04 16:23:00 · 820 阅读 · 0 评论 -
追根究底,MFC六大关键技术之剖析(第二部分)
追根究底,MFC六大关键技术之剖析(第二部分)小李先生二、运行时类型识别(RTTI)运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C++编程中的sizeof(转载 2009-09-10 12:31:00 · 496 阅读 · 0 评论 -
调用未知DLL中的导出函数
不知道诸位看官是否有过这样的经历:在不经意之间发现一个DLL文件,它里边有不少有趣的导出函数——但是由于你不知道如何调用这些函数,所以只能大发感慨而又无能为力焉。固然有些知名的DLL可以直接通过搜索引擎来找到它的使用方式(比如本文中的例子ipsearcher.dll),不过我们诚然不能希望自己总能交到这样的好运。所以在本文中,李马希望通过自己文理不甚通达的讲解能够给大家以授人以渔的效果。转载 2009-09-08 10:46:00 · 915 阅读 · 0 评论 -
用CryptoAPI进行数据加密
或称CryptoAPI,就可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法。本文将对CryptoAPI及其使用的数据加密原理作一简单的介绍,然后给出了用CryptoAPI编写加密程序的大致步骤,最后以一个文件的加密、解密程序为例演示了CryptoAPI的部分功能。 ---- 1. CryptoAPI简介 ----CryptoAPI是一组函数,为了完成数学计转载 2009-08-28 10:59:00 · 853 阅读 · 0 评论 -
在VC++下对文件属性的获取与更改
摘要:本文讲述了在Visual C++ 下编程实现对磁盘文件的属性进行获取以及更改的一般方法,并给出部分相关的关键代码。 一、 引言 文件是数据在磁盘上最常用的一种存放形式,也是在程序设计中与之经常打交道的一种编程对象,不少程序尤其是数据传输和处理类的应用程序更是需要频繁的创建、读取和写入文件。对于一些要求不是很严格的程序,我们往往只关心文件的内容是否正确、文转载 2009-08-25 13:06:00 · 601 阅读 · 0 评论 -
Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量
关键词: VC++6.0; 线程同步;临界区;事件;互斥;信号量; 正文 使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解转载 2009-08-20 17:56:00 · 479 阅读 · 0 评论 -
句柄vs指针
句柄vs指针 句柄其实就是指针,但是他和指针最大的不同是:给你一个指针,你可以通过这个指针做任何事情,也许是好事,也许是通过这个指针破坏内存,干一些捣乱的事情。这个我想大家都会碰到过,因为乱用指针导致程序崩溃 句柄就没有这个缺点,通过句柄,你只能干一些windows让你干的事情(调用一些api函数等等),没有了指针的坏处。 句柄是一些表的索引也就是指向指针的指针,句柄转载 2009-06-18 21:33:00 · 704 阅读 · 0 评论 -
ANSI&Unicode编码相关
ASCII常见的英文字符,数字,以及标点符号。用一个字节表示,一共可表示256个字符,对于使用英文的国家来说已经足够,但是对于像中国,1个字节不足以表示所有的字符,所以在ASCII的基础上,对其进行拓展,形成了自己的字符集和编码方式。ANSI不同的国家地区制定了不同的标准表示自己的字符,如:中国大陆:GBK18转载 2009-08-24 10:00:00 · 749 阅读 · 0 评论 -
进制的转换
6.1 为什么需要八进制和十六进制? 编程中,我们常用的还是10进制……必竟C/C++是高级语言。比如:int a = 100,b = 99;不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型转载 2009-08-24 14:09:00 · 1316 阅读 · 0 评论 -
Microsoft CryptoAPI加密技术
在这个信息爆炸的时代,我们不得不对信息的安全提高警惕。加密作为保障数据信息安全的一种方式,越来越受到人们的关注。 下面,我将把自己对Microsoft CryptoAPI的一些肤浅的理解与大家共享,有什么不妥之处望不吝赐教。 一、 加密方法: 当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信转载 2009-08-25 23:01:00 · 1068 阅读 · 0 评论 -
VC++实现文件夹时间属性的获取与更改
引言: 对于大多数的IT企业和绝大多数的个人用户而言,数据的备份主要是对数据内容的简单备份,而很少涉及对备份数据自身属性如文件属性、所在文件夹的时间属性等内容的备份。而在某些对数据管理有着非常严格要求的特殊行业中,对以上这些相关属性信息的备份也是同等重要的。但是在目前的Windows操作系统下,不论是直接通过手工进行数据备份还是通过某些数据备份软件来进行,都难以将这些信息完全保持转载 2009-08-25 13:01:00 · 599 阅读 · 0 评论 -
VC防止窗口和控件闪烁的方法
1、将Invalidate()替换为InvalidateRect() Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域内的内容,所以所需时间会少一些。虫虫以前很懒,经常为一小块区域的重画就调用Invalidate(),不愿意自己去计算需要重画的Rect,但是事实是,如果你确实需要改善闪烁的情况,计算一个Re转载 2009-06-21 20:40:00 · 867 阅读 · 0 评论 -
详解公钥、私钥、数字证书的概念
加密和认证 首先我们需要区分加密和认证这两个基本概念。 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。 公钥和私钥转载 2009-08-25 16:20:00 · 2965 阅读 · 2 评论 -
什么是数字证书?它有什么作用?
证书是验证身份的标志,有数字证书相当于有了一个认证标志,很多网站都有数字认证,像淘宝,现金交易时候就会有一个数字证书的验证 1.数字证书基本功能数字证书,是由证书认证机构签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及一些扩展信息的数字文件。从证书的用途来看,数字证书可分为签名证书和加密证书。签名证书主要用于对用户信息进行签名,以保证信息完整性和行为的不可转载 2009-08-26 15:03:00 · 17398 阅读 · 1 评论 -
C++ 中stdafx.h头文件的作用
stdafx.h头文件的作用Standard Application Fram Extend没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复转载 2009-09-09 16:40:00 · 1363 阅读 · 0 评论 -
static_cast 和 reinterpret_cast的区别以及dynamic_cast
大多程序员在学C++前都学过C,并且习惯于C风格(类型)转换。当写C++(程序)时,有时候我们在使用static_cast时可能会有点模糊。在本文中,我将说明static_cast泛型(Generic Types) float f = 12.3; float* pf = &f; // static cast转载 2009-09-16 13:52:00 · 756 阅读 · 0 评论 -
追根究底,MFC六大关键技术剖析(第三部分)
三、动态创建动态创建就是运行时创建指定类的对象,在MFC中大量使用。如框架窗口对象、视对象,还有文档对象都需要由文档模板类对象来动态的创建。我觉得这是每个MFC的学习者很希望理解的问题。初次接触MFC的时候,很容易有这样的迷惘。MFC的几大类不用我们设计也就罢了,但最疑惑的是不用我们实例化对象。本来最直观的理解就是,我们需要框转载 2009-09-10 13:45:00 · 569 阅读 · 0 评论 -
工具条的编程技术与状态栏的设计与实现
4.2工具条的编程技术 本节将讨论一些与工具条有关的编程技术,主要包括命令处理、命令更新、按钮风格和工具条的隐藏/显示等技术。4.2.1命令处理 要使菜单和工具条执行命令,光为它们指定命令ID是不行的,必须为每个命令ID定义命令处理函数。如果不为命令定义命令处理函数或下面将要提到的命令更新处理函数,则框架将自动使该命令对应的菜单项和按钮禁止(灰化),这转载 2009-10-16 22:27:00 · 741 阅读 · 0 评论 -
CreateFileMapping的使用
测试创建和打开文件映射的时候老是得到"句柄无效"的错误, 仔细看了MSDN以后才发觉是函数认识不透, 这里把相关的解释翻译出来 HANDLE CreateFileMapping( HANDLE hFile, //物理文件句柄 LPSECURITY_ATTRIBUTES lpAttributes, //安全设置 DWORD flProtect,转载 2009-11-10 16:14:00 · 5092 阅读 · 0 评论 -
VC++显示弹出式菜单的两种方法
2005-1-26 方法一:调入菜单资源 ///////////////////////////////////////////////////////////////////////////////////////////// // CMy1View message handlers ///先在Menu资源中添加弹出式菜单,命名:IDR_MENU1 ///再添加CView类的消息W转载 2009-11-10 11:39:00 · 1855 阅读 · 0 评论 -
剖析程序的内存布局
摘自:http://blog.csdn.net/drshenlei/article/details/4339110 内存管理模块是操作系统的心脏;它对应用程序和系统管理非常重要。今后的几篇文章中,我将着眼于实际的内存问题,但也不避讳其中的技术内幕。由于不少概念是通用的,所以文中大部分例子取自32位x86平台的Linux和Windows系统。本系列第一篇文章讲述应用程序的内存布局。转载 2012-10-16 08:44:59 · 726 阅读 · 0 评论 -
C++中placement new操作符
摘自:http://blog.csdn.net/zhangxinrun/article/details/5940019placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t转载 2013-04-09 13:09:14 · 558 阅读 · 0 评论 -
透过 Linux 内核看无锁编程
摘自:http://www.ibm.com/developerworks/cn/linux/l-cn-lockfree/如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步。同步可分为阻塞型同步(Blocking Synchronization)和非阻塞型同步( Non-blocking Synchronization)。阻塞型同步是指当一个线程到达临界区转载 2013-06-28 16:12:20 · 654 阅读 · 0 评论 -
共享库
摘自:http://learn.akae.cn/media/ch20s04.html共享库 请点评4.1. 编译、链接、运行 请点评组成共享库的目标文件和一般的目标文件有所不同,在编译时要加-fPIC选项,例如:$ gcc -c -fPIC stack/stack.c stack/push.c stack/pop.c stack/is_empty.c-f后面跟一转载 2013-12-13 13:55:46 · 927 阅读 · 0 评论 -
【vc】【多媒体编程应用】MCI编程之 mciSendCommand 和mciSendString
使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 或者在程序中加入#pragma comment(lib,"winmm.lib")1、MCI简介 MCI(Media Control Interface,媒体控制接口)向Windows程序提供了在高转载 2009-10-15 14:42:00 · 2422 阅读 · 0 评论 -
VC无闪烁刷屏技术的实现
VC无闪烁刷屏技术的实现1显示的图形为什么会闪烁 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪。如果将背景刷设置转载 2009-10-13 18:12:00 · 594 阅读 · 0 评论 -
使用MFC的数组类
MFC的数组类支持的数组类似于C++中的常规数组,可以存放任何数据类型。C++的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。 MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray转载 2009-09-22 14:46:00 · 745 阅读 · 0 评论 -
MFC六大关键技术(第四部分)——永久保存(串行化)
MFC六大关键技术(第四部分)——永久保存(串行化)先用一句话来说明永久保存的重要:弄懂它以后,你就越来越像个程序员了!如果我们的程序不需要永久保存,那几乎可以肯定是一个小玩儿。那怕我们的记事本、画图等小程序,也需要保存才有真正的意义。对于MFC的很多地方我不甚满意,总觉得它喜欢拿一组低能而神秘的宏来故弄玄虚,但对于它转载 2009-09-10 14:08:00 · 648 阅读 · 0 评论 -
HeapAlloc,GlobalAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
1. 首先我们来看HeapAlloc:MSDN上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是局部。函数原型为:LPVOIDHeapAlloc(转载 2009-09-14 12:40:00 · 608 阅读 · 0 评论 -
Base64编码解码与实现
Base64是一种很常见的编码规范,其定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64Content-Transfer-Encoding is designed to represent arbitrary sequencesof octets in a form that need not be humanly转载 2009-09-14 14:28:00 · 658 阅读 · 0 评论 -
文档/视图结构中的各个部分是如何联系到一起的
文档/视图结构是MFC中最有特色而又有难度的部分,在这当中涉及了应用、文档模板、文档、视图、MDI框架窗口、MDI子窗口等不同的对象,如果不了解这些部分之间如何关联的话,就可能犯错误,也就很难编出有水平的文档/视图程序。比如我在初学VC编程的时候,为应用程序添加了两个文档模板,两个模板公用一个文档类,只是视图不一样,期望当一个模板的文档的视图改变了文档后,调用UpdateAllViews后转载 2009-09-15 17:12:00 · 600 阅读 · 0 评论 -
两种自定义消息的发送与接收的方法
说明:以下用一个自创的对话框类(MyMessageDlg)向视图类(MessageTestView)发送自定义消息为例,说明这两种不同方法的自定义消息的总结:消息传递的方法一:使用ON_MESSAGE使用ON_MESSAGE响应消息,必须配合定义消息#define WM_MY_MESSAGE (WM_USER+100)对于发送消息者-MyMessageDlg,在其M转载 2009-09-15 17:13:00 · 744 阅读 · 0 评论 -
#pragma小结
在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作。 一 message参数。 它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。 其使用方法为: #pr转载 2009-09-15 14:36:00 · 463 阅读 · 0 评论 -
SetCapture和ReleaseCapture
函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。 函数原型:HWND SetCapture(HWND hwnd); 参数: hWnd:当前线程里要捕获鼠标的转载 2009-09-18 15:45:00 · 1103 阅读 · 0 评论