2012年9月3日

摘要: VC中的消息的分类有3种:窗口消息、命令消息和控件通知消息,我们这里要谈的是最后一种:控件通知消息。 控件通知消息,是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows公共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的滚动条都会产生通知消息。 她类似于命令消息,当用户与控件窗口交互时,那么控件通知消息就会从控件窗口发送到它的主窗口。但是这种消息的存在并不是为了处理用户命令,而是为了让主窗口能够改变控件,例如加载、显示数据。例如按下一个按钮,他向父窗口发送的消. 阅读全文
posted @ 2012-09-03 16:46 1上善若水1 阅读(423) 评论(0) 推荐(0)

2012年8月29日

摘要: volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: int volatile nVint; >>>>;当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。 例如: volatile int i=10; int a = i; ... //其他代码,并未明确告诉编译器,对i进 阅读全文
posted @ 2012-08-29 15:20 1上善若水1 阅读(125) 评论(0) 推荐(0)

2012年8月22日

摘要: // Judge the default lanuage ID of Windows System WORD wLangID=PRIMARYLANGID(::GetSystemDefaultLangID()); switch(wLangID) { case LANG_CHINESE: m_hLangDLL=AfxLoadLibrary(_T( "Chinese.DLL ")); break; default: m_hLangDLL=AfxLoadLibrary(_T( "English.DLL ")); break; } if(!m_hLangDLL) 阅读全文
posted @ 2012-08-22 09:38 1上善若水1 阅读(172) 评论(0) 推荐(0)

2012年8月15日

摘要: 上篇文章提到了 C++ 类构造函数对成员变量初始化赋值时使用“初始化列表”的方式带来的好处。这篇文章将介绍另一个大大的好处——由初始化列表异常块机制带来的构造函数的安全性机制。听起来有些拗口。直接上代码:[cpp] view plaincopyprint?class Fck { int* sbArray; public: Fck ( int sbNum ); ~Fck (); }; Fck :: Fck ( int sbNum ) try: sbArray ( newint[sbNum] ) { cout << " Fck Constructing " < 阅读全文
posted @ 2012-08-15 10:29 1上善若水1 阅读(484) 评论(0) 推荐(0)
摘要: C++ 类对像构造时,需要对类成员变量完成初始化赋值操作。使用初始化列表完成这步操作在性能上有益处。什么好处呢?摆道理显得不够彻底。看书不如做实验。让我们结合执行过程来查看。考虑如下示例代码:Derive 类构造函数两个 Base 类型的参数,分别赋给该类两个 Base 类型的成员变量 b1、b2,一个使用初始化列表,一个使用等于号赋值。输出结果如下:前两行输出是主函数前两行构造 b1、b2 对像时调用的带参构造函数。第三行是初始化列表构造 b1 时调用的复制构造函数。第四行调用了一次默认构造函数……第四行是哪儿来的?这里需要陈述一下“复制构造函数”和“赋值重载函数”之间的语义区别。复制构造函 阅读全文
posted @ 2012-08-15 10:29 1上善若水1 阅读(1613) 评论(0) 推荐(0)

2012年8月13日

摘要: VC正则表达式的使用2010年9月11日星期六 邵盛松正则表达式是一种对字符进行模糊匹配的一个公式。在数据有效性验证,查找,替换文本中都可以使用正则表达式 。本篇文章主要描述的是使用ATL中两个模板类CAtlRegExp和CAtlREMatchContext。在使用CAtlRegExp类之前需要添加#include <atlrx.h> 这个头文件。RegExp是Regular Expression的缩写以匹配邮件地址字符串为例说明两个类的使用该示例更改自http://msdn.microsoft.com/en-us/library/k3zs4axe(VS.80).aspxCStri 阅读全文
posted @ 2012-08-13 10:33 1上善若水1 阅读(2440) 评论(1) 推荐(0)

2012年8月7日

摘要: 同步多线程的同步机制 1、 Event 用事件(Event)来同步线程是最具弹性的了。一个事件有两种状态:激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型:手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自动重置事件被设置为激发状态后,会唤醒“一个”等待中的线程,然后自动恢复为未激发状态。所以用自动重置事件来同步两个线程比较理想。MFC中对应的类为CEvent.。CEvent的构造函数默认创建一个自动重置的事件,而且处于未激发状态。共有三个函数来改变事件的状态:SetEvent,R.. 阅读全文
posted @ 2012-08-07 23:36 1上善若水1 阅读(160) 评论(1) 推荐(0)

2012年8月2日

摘要: 如下是阅读“Boost程序库完全开发指南-深入C++“准”标准库”的大纲学习摘要一、 Boost命名规则33Boost库在VC编译器下支持库自动链接技术(使用#pragma comment (lib,xxx)),只要把所有生成的lib拷贝到vc的搜索路径下,不需要你费心,编译器会自动根据编译选项找到合适的库链接成可执行文件。但如果读者使用的是GCC、XLC或者其他不支持自动链接技术的编译器,就有必要了解Boost库的命名规则,以便在链接时指定正确的库。libboost_file system-vc8 0 -mt-sgdp-1_4 2 . lib前缀:统一为lib,但在Windows下只有静态库 阅读全文
posted @ 2012-08-02 15:08 1上善若水1 阅读(253) 评论(0) 推荐(0)

2012年7月30日

摘要: INI文件的操作概述 在程序中经常要用到设置或者其他少量数据的存盘,以便程序在下一次执行的时候可以使用,比如说保存本次程序执行时窗口的位置、大小、一些用户设置的数据等等,在 Dos 下编程的时候,我们一般自己产生一个文件,由自己把这些数据写到文件中,然后在下一次执行的时候再读出来使用。在 Win32 编程中当然你也可以这样干,但 Windows 已经为我们提供了两种方便的办法,那就是使用注册表或者 ini 文件(Profile)来保存少量数据。本文中先介绍一下 .ini 文件的使用。ini 文件是文本文件,中间的数据格式一般为:[Section1 Name]KeyName1=value1Key 阅读全文
posted @ 2012-07-30 18:21 1上善若水1 阅读(169) 评论(0) 推荐(0)

2012年7月27日

摘要: 《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy() .................................................................int 转 CString:CString.Format("%d",int);...............................string 转 CString CString.format("%s", strin 阅读全文
posted @ 2012-07-27 09:12 1上善若水1 阅读(143) 评论(0) 推荐(0)

导航