02 2011 档案
pragma预处理指令详解
摘要:在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。 (1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #Pragma message. 阅读全文
posted @ 2011-02-28 16:55 maxweii 阅读(314) 评论(0) 推荐(0)
MFC中实现自绘菜单
摘要:为了实现菜单的自绘,花了我几个小时,其实真正解决后又发现很简单。实现菜单的自绘只需要三个步骤:第一步:将所有菜单项设置为MF_OWNERDRAW,即自绘模式第二步:在WM_MEASUREITEM消息中设置菜单项的大小第三步:在WM_DRAWITEM消息中进行菜单项的绘制问题首先出现在了第一步,我要绘制的是一个上下文菜单,即右键菜单,要将菜单项设置为MF_OWNERDRAW,需要用到ModifyMenu函数,起始由于ModifyMenu函数的参数设置错误,导致程序怎么也响应不了WM_MEASUREITEM和WM_DRAWITEM消息,所以建议在使用ModifyMenu时对返回值进行检查。void 阅读全文
posted @ 2011-02-25 00:48 maxweii 阅读(1922) 评论(0) 推荐(0)
Windows Socket五种I/O模型——代码全攻略
摘要:如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑到程序的扩展性和可移植性等因素,作出自己的选择。我会以一个回应反射式服务器(与《Windows网络编程》第八章一样)来介绍这五种I/O模型。我们假设客户端的代码如下(为代码直观,省去所有错误检查,以下 阅读全文
posted @ 2011-02-22 23:48 maxweii 阅读(791) 评论(0) 推荐(0)
Windows网络编程系列教程之四:Select模型
摘要:http://www.51see.com/asp/bbs/public/bp_show.asp?t_id=200308131152297103讲一下套接字模式和套接字I/O模型的区别。先说明一下,只针对Winsock,如果你要骨头里挑鸡蛋把UNIX下的套接字概念来往这里套,那就不关我的事。套接字模式:阻塞套接字和非阻塞套接字。或者叫同步套接字和异步套接字(#add这么叫是否可以待定)。套接字模型:描述如何对套接字的I/O行为进行管理。Winsock提供的I/O模型一共有五种:select,WSAAsyncSelect,WSAEventSelect,Overlapped,Completion。今 阅读全文
posted @ 2011-02-22 23:23 maxweii 阅读(788) 评论(0) 推荐(0)
函数对象/仿函数
摘要:提到C++ STL,首先被人想到的是它的三大组件:Containers, Iterators, Algorithms,即容器,迭代器和算法。容器为用户提供了常用的数据结构,算法大多是独立于容器的常用的基本算法,迭代器是由容器提供的一种接口,算法通过迭代器来操控容器。接下来要介绍的是另外的一种组件,函数对象(Function Object,JJHou译作Functor仿函数)。 什么是函数对象 顾名思义,函数对象首先是一个对象,即某个类的实例。其次,函数对象的行为和函数一致,即是说可以像调用函数一样来使用函数对象,如参数传递、返回值等。这种行为是通过重载类的()操作符来实现的,举例说明之,cla 阅读全文
posted @ 2011-02-16 23:48 maxweii 阅读(3391) 评论(1) 推荐(0)
STL中常用的一些算法函数[持续更新
摘要:1 merge 归并 将两个数组合并成一个(有序) merge(iarray1,iarray+len1,iarray2,iarray2+len2,result); 升序 merge(iarray1,iarray+len1,iarray2,iarray2+len2,result,greater<int>()); 降序2 reverse 元素反向 reverse(iarray,iarray+len1);3 reverse_copy 元素反向复制 reverse(iarray,iarray+len,iarray_new); 复制到新的数组中3 unique 剔除连续重复元素 ,剔除后元素 阅读全文
posted @ 2011-02-16 23:30 maxweii 阅读(809) 评论(0) 推荐(0)
vs重要设置
摘要:vs2008重要快捷键ALT+SHIFT+ENTER 全屏活动文件自动定位到 解决方案视图8. 怎样调用智能提示? Ctrl J ALT + ->9. 怎样调用参数信息提示? 光标放到参数名上面,然后输入Ctrl Shif space。11向前 向后快捷键ctrl - 向后定位,ctrl shift - 向前定位。12定位到配对的括号ctrl ]格式化: VC6中:ALT + F8格式化: 选中代码后 Ctrl+K + F注释:选中代码后 Ctrl+K + C取消注释:选中代码后 Ctrl+K + UCtrl + M + P: 停止大纲显示 ,要开启可关闭该文件再打开即可Ctrl + M 阅读全文
posted @ 2011-02-14 23:03 maxweii 阅读(395) 评论(0) 推荐(0)
IPicture使用总结
摘要:1、IPicture接口对象的创建 方法1:直接通过文件创建LPCSTR szFileUrl;IPicture *pIPicture;OleLoadPicturePath(CComBSTR(szFileUrl), (LPUNKNOWN)NULL, 0, 0, IID_IPicture, (LPVOID*)&amp;pIPicture)) 方法2:通过IStream来创建// 加载电子地图LPCSTR szFileUrl;IStream *pStream = NULL;IPicture *pIPicture = NULL;;CFileStatus fstatus;CFile fi 阅读全文
posted @ 2011-02-12 14:06 maxweii 阅读(3963) 评论(0) 推荐(0)
使用CFindReplaceDialog
摘要:效果图:查找和替换 对话框也是非模态对话框,所以创建过程和MFC下创建非模态对话框的过程有点类似.先Create出一个窗口,设置好相关参数然后在显示出来使用就OK.Create原型:virtual BOOL Create(BOOL bFindDialogOnly, // TRUE for Find, FALSE for FindReplaceLPCTSTR lpszFindWhat, //默认被查找的字符串LPCTSTR lpszReplaceWith = NULL, //默认被查找替换的字符串DWORD dwFlags = FR_DOWN, //设置对话框里面的一些属性啦,下面说明了相关标志 阅读全文
posted @ 2011-02-10 11:14 maxweii 阅读(1566) 评论(1) 推荐(0)