08 2011 档案

摘要:前几日碰到一问题,当CSocket的Receive阻塞时,如何进行超时处理。由于程序是在多线程中使用Socket通信,开始时是在主线程中用定时监测Receive函数,当超时后,结束通信。但问题是CSocket对象无法释放。因此从网上搜索解决办法,直接在线程中对Receive进行超时处理。不错,搜到以下内容,很多网站转载。 为CSocket配置Time-Out功能 CSocket操作,如Send(),Receive(),Connect()都属阻塞操作,即它们在成功完成或错误发生之前是不会返回的。 在某些情况下,某项操作可能永远不能成功完成,程序为了等待其完成就得永远循环下去。在程序中为... 阅读全文
posted @ 2011-08-27 16:51 likebeta 阅读(4379) 评论(1) 推荐(2)
摘要:在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使 阅读全文
posted @ 2011-08-27 10:49 likebeta 阅读(1327) 评论(0) 推荐(0)
摘要:在写跨浏览器的js程序中,检测浏览器是一个很重要的工作。我们不时要为不同的浏览器写分支代码。如下是一种//添加事件工具函数function addEvent(el,type,handle){ if(el.addEventListener){//for standard browses el.addEventListener(type,handle,false); }else if(el.attachEvent){//for IE el.attachEvent("on"+event,handle); }else{//other el["... 阅读全文
posted @ 2011-08-24 21:52 likebeta 阅读(900) 评论(0) 推荐(0)
摘要:1、初始化Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。2、输出Save 将XML数据写入文件中。类似C#的Save。GetDoc 将整个XML数据文档作为字符串返回。3、改变当前位置FindElem 定位到下一个元素,可能和一个标签名或路径匹配。FindChildElem 定位到下一个子元素,匹配元素名或路径。FindPrevElem 定位前一个元素,可能和一个标签名或路径匹配。FindPrevChildElem 定位前一个子元素,可能匹配标签名。FindNode 定位下 阅读全文
posted @ 2011-08-19 10:00 likebeta 阅读(3651) 评论(0) 推荐(1)
摘要:MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余好事者也,不忍资源浪费,特为之注解。一、CAsyncSocket与CSocket的区别前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则被称为短连接。为了更明白地讲清楚两者的区别,举个例子:设想你是一位体育老师,需要测验100位同学的400米成绩。你当然不会让100位同学一起起跑,因为当同学们返回终点时,你根本来不及掐 阅读全文
posted @ 2011-08-18 20:49 likebeta 阅读(868) 评论(0) 推荐(0)
摘要:在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive的错误.解决方法:1、如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的 Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。确定。2、在文件开头添加:#include "stdafx.h" 对预编译头文件说明如 阅读全文
posted @ 2011-08-17 10:00 likebeta 阅读(414) 评论(0) 推荐(0)
摘要:经过今天尝试C++解析XML串,也算有了不少收获,总结一下。我是使用的CMarkup类对XML进行操作。CMarkup好象都是先从一个xml文件里面把内容读出来,再进行解析,搞得我恨不得要把我的string写到xml文件里面再取出来了。如果需要直接读取string,可以直接用 CMarkup::SetDoc方法。最后其他的方法转载别人的使用例子,写得很全。(一)先讲一下XML中的物殊字符,手动填写时注意一下。字符 字符实体& &或&' '或'> ... 阅读全文
posted @ 2011-08-17 09:37 likebeta 阅读(1435) 评论(0) 推荐(1)
摘要:AfxExtractSubString函数的用法在我做加密软件时,需要给加密后的文件加个后缀(比如.zq),然后解密时又需要去掉后缀,还原本来的后缀,并在文件名后加“解密”二字,我采取的就是这个比较不常用的MFC分割字符串的函数AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,int iSubString, TCHAR chSep = '\n'),下面大概说一下它的用法:注:本文系rainy8758原创,转载请注明出处:http://blog.hjenglish.com/rainy8758/arti 阅读全文
posted @ 2011-08-15 10:13 likebeta 阅读(4228) 评论(0) 推荐(0)
摘要:1.MFC窗口的句柄和指针的转换(1) 一般窗口对象都会有一个其对应的句柄变量,所以我们可以取此对象的m_hWnd属性来得到句柄。(2)使用GetSafeHwnd函数取得程序所在窗口类的句柄(3)使用FromHandle函数来通过句柄得到其想要的指针 其他的一些方法: GetActiveWindow 取当前活动窗口句柄 AfxGetMainWnd 取主窗口句柄 GetForegroundWindow 取前台窗口句柄 FindWindow寻找参数指定的窗口 EnumWindow枚举窗口2. 上下文无关设备的句柄和指针的转换 (1)this->m_hDC (2)CDC::GetSafeHdc 阅读全文
posted @ 2011-08-04 12:43 likebeta 阅读(488) 评论(0) 推荐(1)
摘要:以下代码主要来源于CodeProject上一个用渐变色填充DC的static控件中的一部分代码。//这是要使用的函数原型:typedef UINT (CALLBACK* LPGNDLLFUNC)(HDC,CONST PTRIVERTEX,DWORD,CONST PVOID,DWORD,DWORD);HINSTANCEhinst_msimg32 = NULL;static LPGNDLLFUNCpdllfunc_GradientFill;//初始化:hinst_msimg32 = LoadLibrary( "msimg32.dll" );if( hinst_msimg32 ) 阅读全文
posted @ 2011-08-01 17:56 likebeta 阅读(961) 评论(0) 推荐(1)
摘要:模态和非模态两者的区别: 一. 非模态对话框的模板必须具有Visible风格(Visible=True),否则对话框将不可见,而模态对话框则无需设置该项风格。在实际编程中更加保险的办法是调用CWnd::ShowWindow(SW_SHOW)来显示对话框,而不管对话框是否具有Visible风格。 二. 非模态对话框对象是用new操作符来动态创建的,而不是以成员变量的形式嵌入到别的对象中或以局部变量的形式构建的。通常应在对话框的拥有者窗口类内声明一个指向对话框类的指针成员变量,通过该指针可访问对话框对象。 三. 通过调用CDialog::Create函数来启动对话框,而不是CDialog::DoM 阅读全文
posted @ 2011-08-01 15:03 likebeta 阅读(975) 评论(0) 推荐(0)