摘要:
引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。 内存映射文件 内存映射文件与虚拟内存有些类似,通过内存映射文件可以... 阅读全文
posted @ 2013-08-30 22:38
问笑
阅读(4684)
评论(0)
推荐(1)
摘要:
同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。异步 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。以 CAsy.. 阅读全文
posted @ 2013-08-30 20:31
问笑
阅读(239)
评论(0)
推荐(0)
摘要:
讲一下套接字模式和套接字I/O模型的区别。先说明一下,只针对Winsock,如果你要骨头里挑鸡蛋把UNIX下的套接字概念来往这里套,那就不关我的事。套接字模式:阻塞套接字和非阻塞套接字。或者叫同步套接字和异步套接字。套接字模型:描述如何对套接字的I/O行为进行管理。Winsock提供的I/O模型一共有五种:select,WSAAsyncSelect,WSAEventSelect,Overlapped,Completion。今天先讲解select。1:select模型(选择模型)先看一下下面的这句代码:int iResult = recv(s, buffer,1024);这是用来接收数据的,在默 阅读全文
posted @ 2013-08-30 20:23
问笑
阅读(505)
评论(0)
推荐(0)
摘要:
Operator precedence and associativity-运算符的优先级和结合性,下表是C语言的运算符优先级和结合性表格优先级我就不说了,表中写的很清楚,说一下结合性。运算符的结合性运算符的结合性是指相同优先级的运算符在同一个表达式中,且没有括号的时候,运算符和操作数的结合方式,通常有从左到右结合和从右到左结合两种方 式。举个例子,假设~是一个运算符,又有表达式a~b~c,如果~是左结合的,那么该表达式被解析为(a~b)~c,如果~是右结合的,那么该表达式将被 解析为a~(b~c)。比如上表中三目运算符?:是从右向左结合的,那么下面的表达式a > b ? b > 阅读全文
posted @ 2013-08-30 16:21
问笑
阅读(549)
评论(0)
推荐(0)
摘要:
结合性有两种,一种是自左至右,另一种是自右至左,大部分运算符的结合性是自左至右,只有单目运算符、三目运算符的赋值运算符的结合性自右至左。优先级有15种。记忆方法如下:记住一个最高的:构造类型的元素或成员以及小括号。记住一个最低的:逗号运算符。剩余的是一、二、三、赋值。意思是单目、双目、三目和赋值运算符。在诸多运算符中,又分为:算术、关系、逻辑。两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。再细分如下:算术运算符分*,/,%高于+,-。关系运算符中,》,》=,《,〈=高于==,!=。逻辑运算符中,除了逻辑求反(!)是单目外,逻辑与(&&)高于逻辑 阅读全文
posted @ 2013-08-30 16:10
问笑
阅读(1671)
评论(0)
推荐(0)
摘要:
在多线程的情况下,如果存在多个线程要使用同一个资源的情况时,则需要在线程之间进行协调(同步)才能使程序完成预定的工作,而不会出现灾难性的冲突。 MFC 提供的多线程类分为两类:同步对象(CSyncObject 、CSemaphore 、CMutex 、CCriticalSection 和 CEvent )和同步访问对象(CMultiLock 和 CSingleLock )。当必须控制对资源的访问以确保资源的完整性时,使用同步类。同步访问类用于获取对这些资源的访问权。本主题介绍各个类的适用情况。若要确定应使用的同步类,请询问以下一系列问题:应用程序必须等到发生某事才能访问资源(例如,在将数据写入 阅读全文
posted @ 2013-08-30 11:52
问笑
阅读(424)
评论(0)
推荐(0)
摘要:
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种: 一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。 二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身... 阅读全文
posted @ 2013-08-30 11:49
问笑
阅读(201)
评论(0)
推荐(0)
摘要:
这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数。参考帖子如下:(1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba10-41616d16f07e.html(2)http://www.cppblog.com/deercoder/articles/107132.html这两篇帖子是比较经典的,能够回答我的问题。但是如何动态创建消息响应函数呢?这需要利用另外一个命令:ON_COMMAND_RANGE参考如下帖子:http://topic.csdn.net/t/20020728/22/906766.html注意:ON_C 阅读全文
posted @ 2013-08-30 11:19
问笑
阅读(658)
评论(0)
推荐(0)
摘要:
前言:串操作是编程中最常用也最基本的操作之一. 做为VC程序员,无论是菜鸟或高手都曾用过CString.而且好像实际编程中很难离得开它(虽然它不是标准C++中的库).因为MFC中提供的这个类对 我们操作字串实在太方便了,CString不仅提供各种丰富的操作函数、操作符重载,使我们使用起串起来更象basic中那样直观;而且它还提供了动态内 存分配,使我们减少了多少字符串数组越界的隐患。但是,我们在使用过程中也体会到CString简直太容易出错了,而且有的不可捉摸。所以有许多高人站过 来,建议抛弃它。 在此,我个人认为:CString封装得确实很完美,它有许多优点,如“容易使用 ,功能强,动态分配 阅读全文
posted @ 2013-08-30 10:40
问笑
阅读(208)
评论(0)
推荐(0)
摘要:
char :单字节变量类型,最多表示256个字符,wchar_t :宽字节变量类型,用于表示Unicode字符,它实际定义在里:typedef unsigned short wchar_t。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下: wchar_t c = `A' ; wchar_t * p = L"Hello!" ; wchar_t a[] = L"Hello!" ; 其中,宽字节类型每个变量占用2个字节,故上述数组a的sizeof(a) = 14TCHAR / _T( ) : 如果在程序中既包括A 阅读全文
posted @ 2013-08-30 10:21
问笑
阅读(266)
评论(0)
推荐(0)
摘要:
Ctrl+E,D ----格式化全部代码Ctrl+E,F ----格式化选中的代码CTRL + SHIFT + B生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTRL + F12转到声明CTRL + ALT + J对象浏览CTRL + ALT + F1帮助目录CTRL + F1 动态帮助F1 帮助SHIFT + F1当前窗口帮助CTRL + ALT + F3帮助-搜索SHIF 阅读全文
posted @ 2013-08-30 10:09
问笑
阅读(175)
评论(0)
推荐(0)
摘要:
最近老用到Cstring, TCHAR*, char*的转换.找到一篇写得蛮详细的. 引用过来, 方便自己以后查阅.char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是char还是w_char;TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符#ifdef UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endif 所以用MBCS来build时,TCHAR是char,使用UNI. 阅读全文
posted @ 2013-08-30 09:57
问笑
阅读(630)
评论(0)
推荐(0)
浙公网安备 33010602011771号