随笔分类 -  Win32&MFC

windows应用级开发
摘要:题目: 设有如下C++类 class A{int value;public: A( int n = 0 ) : value( n ) {}int GetValue() {return value; }}; 请使用某种方式来在类的外部改变私有成员A::value的值。 程序员的可能做法: class A{int value;public: A( int n = 0 ) : ... 阅读全文
posted @ 2007-11-07 10:42 至尊王者 阅读(408) 评论(1) 推荐(0) 编辑
摘要:朋友帖了如下一段代码: #pragma pack(4) class TestB { public: int aa; char a; short b; char c; }; int nSize = sizeof(TestB); 这里nSize结果为12,在预料之中。 现在去掉第一个成员变量为如下代码: #pragma pack(4)... 阅读全文
posted @ 2007-11-02 14:43 至尊王者 阅读(632) 评论(0) 推荐(0) 编辑
摘要:通常来说内存对齐很能提高速度的,使用如下指令在两个操作系统下面令内存对齐 #ifdef _WIN32 typedef __declspec(align(16)) struct #elif _LINUX typedef __attribute__((aligned(16))) struct #endif 这里有一篇讲得很好的文章 http://www.cnblogs.com/flyi... 阅读全文
posted @ 2007-11-02 14:42 至尊王者 阅读(379) 评论(0) 推荐(0) 编辑
摘要:一个程序只运行一个实例(或限制实例数量)通常可以采用如下方法: 1)FindWindow 之 通过查找窗口标题来确定上一实例是否正在运行,不适合窗口标题动态变化的程序。 2)FindWindow 之 通过查找任务栏按纽标题来确定上一实例是否正在运行,不适合按纽标题动态变化的程序(如Winamp)。通常情况下,该方法还是优先考虑,因为按纽标题是一般是固定的。 3)Win... 阅读全文
posted @ 2007-10-30 11:01 至尊王者 阅读(328) 评论(0) 推荐(0) 编辑
摘要:字符编码的使用字符编码主要分两种:MBCS以及 Unicode。 以 C/CC++ 为例,以 char 为单位的数组使用MBCS编码(如 ASCII,GB2312,BIG5),以wchar_t 为单位的数组使用Unicode作为编码。 比如你的程序中使用:char szTitle[] = "窗体标题“;此时,szTitle字符串使用的的是MBCS编码,如果用户的操作系统不是中文的Windows,你... 阅读全文
posted @ 2007-10-30 10:59 至尊王者 阅读(610) 评论(0) 推荐(0) 编辑
摘要:微软C/C++ 编译器选项 -优化- /O1 最小化空间 minimize space /Op[-] 改善浮点数一致性 improve floating-pt consistency /O2 最大化速度 maximize speed /Os 优选代码空间 favor code space /Oa 假设没有别名 assume no aliasing /Ot 优选代码速度 favor code sp... 阅读全文
posted @ 2007-10-26 17:53 至尊王者 阅读(1185) 评论(0) 推荐(0) 编辑
摘要:1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多。 2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作。 3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重要的是不要重复犯相同的错误,那是愚蠢。 ... 阅读全文
posted @ 2007-10-26 17:52 至尊王者 阅读(1136) 评论(2) 推荐(0) 编辑
摘要:VC编程规范-程序员应该这样写代码 基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。 1.3 尽量使用标准库函数和公共函数。 1.4 不要随意定义全局变量,尽量使用局部变量。 1.5 使用括号以避免二义性。 2.可读性要求 2.1 可读性第一,效率第二。 2.2 保持... 阅读全文
posted @ 2007-10-15 16:06 至尊王者 阅读(636) 评论(0) 推荐(0) 编辑
摘要:消息的接收 消息的接收主要有3个函数:GetMessage、PeekMessage、WaitMessage。 GetMessage原型如下:BOOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax); 该函数用来获取与hWnd参数所指定的窗口相关的且wMsgFilterMin和wMsg... 阅读全文
posted @ 2007-10-15 14:57 至尊王者 阅读(1299) 评论(0) 推荐(0) 编辑
摘要:什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。 消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对... 阅读全文
posted @ 2007-10-15 14:55 至尊王者 阅读(691) 评论(1) 推荐(0) 编辑
摘要:Lua的语法非常灵活, 使用他的metatable及metamethod可以模拟出很多语言的特性. C#中我们这样使用事件: xxx.Click += new System.EventHandler(xxx_Click); private void xxx_Click(object sender, EventArgs e) { /**/ } 在Lua中要达到同样的效果, 并且支持事件多播机制, ... 阅读全文
posted @ 2007-10-11 15:15 至尊王者 阅读(711) 评论(0) 推荐(0) 编辑
摘要:写作目的:(此段可跳过) 同步Internet时间,即通过Internet的校时网站传来的数据校准本机时间。但是现在网络上查到的相关编程资料并不多,且其中多是VB和Delphi的代码,VC的代码我还没找到过。是这个东西太难了?应该不是;是太简单了?那也总该有人写吧。 我认为,自己懂和让别人懂压根不是一回事,我写这篇文章,目的当然是后者。当然,理工科出身的河蚌不大可能像文科出身的河蚌那样修... 阅读全文
posted @ 2007-10-11 14:47 至尊王者 阅读(3228) 评论(1) 推荐(0) 编辑
摘要:(四)一些问题的讨论 前面几章的内容都是服务的一些通用的编写原理,但里面隐含着一些问题,编写简单的服务时看不出来,但遇到复杂的应用就会出现一些问题,所以本章就是用来分析、解决这些问题的,适用于高级应用的开发人员。我这一章的内容都是经过实验得到的,很有实际意义。 我在第一章里面就说过,是由一个服务的主线程执行CtrlHandler函数,它将收到各种控制命令,但是真正处理命令,执行操作的是Se... 阅读全文
posted @ 2007-10-11 08:31 至尊王者 阅读(381) 评论(0) 推荐(0) 编辑
摘要:(三)对服务的深入讨论之下 现在我们还剩下一个函数可以在细节上讨论,那就是服务的CtrlHandler函数。 当调用RegisterServiceCtrlHandler函数时,SCM得到并保存这个回调函数的地址。一个SCP调一个告诉SCM如何去控制服务的Win32函数,现在已经有10个预定义的控制请求: Control code Meaning SERVICE_CONTROL_STOPRe... 阅读全文
posted @ 2007-10-11 08:30 至尊王者 阅读(543) 评论(0) 推荐(0) 编辑
摘要:(二)对服务的深入讨论之上 上一章其实只是概括性的介绍,下面开始才是真正的细节所在。在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个SERVICE_TABLE_ENTRY结构数组,这个结构记录了这个服务程序里面所包含的所有服务的名称和服务的进入点函数,下面是一个SERVICE_TABLE_ENTRY的例子: SERVICE_TABLE_ENTRY service_ta... 阅读全文
posted @ 2007-10-11 08:28 至尊王者 阅读(446) 评论(0) 推荐(0) 编辑
摘要:有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。 (一)服务的基础知识 Question 1. 什么是服务?它的特征是什么? 在NT/2000中,服务是一类受到操作系统优待的程序。一个服务首先是一个Win32可执行程序,如果要写一个功能完备且强大的服务,需... 阅读全文
posted @ 2007-10-09 17:39 至尊王者 阅读(541) 评论(0) 推荐(0) 编辑
摘要:算起来,我用Visual C++也有将近5年的历史了。在这期间,我也曾涉猎过Visual Basic和Delphi,但都是浅尝而止;Visual C++始终是我的主业。可是努力的成果如何呢?我用Delphi作出了十多个有规模的软件,用VB--虽然我用在VB上的时间只有短短的两三个月--也有两个像样的项目;然而,在我付出了最大热情和最多努力的Visual C++上面,却只作出了三个自己看得上眼的软件... 阅读全文
posted @ 2007-09-28 12:35 至尊王者 阅读(406) 评论(0) 推荐(0) 编辑
摘要:继承的本质 继承关系是一种耦合度很高的关系,它与组合及一般化(genericity)一样,提供了OO中的一种基本方法,用以将不同的软件组件组合起来。一个类的实例同时也是那个类的所有的祖先的实例。为了保证面向对象设计的有效性,我们应该保存下这种关系的一致性。在子类中的每一次重新定义都应该与在其祖先类中的最初定义进行一致性检查。子类中应该保存下其祖先类的需求。如果存在着不能被保存的需求,就说明了系统... 阅读全文
posted @ 2007-09-28 12:34 至尊王者 阅读(317) 评论(0) 推荐(0) 编辑
摘要:函数重载 C++允许在参数类型不同的前提下重载函数。重载的函数与具有多态性的函数(即虚函数)不同处在于:调用正确的被重载函数实体是在编译期间就被决定了的;而对于具有多态性的函数来说,是通过运行期间的动态绑定来调用我们想调用的那个函数实体。多态性是通过重定义(或重写)这种方式达成的。请不要被重载 (overloading)和重写(overriding)所迷惑。重载是发生在两个或者是更多的函数具有... 阅读全文
posted @ 2007-09-28 12:34 至尊王者 阅读(272) 评论(0) 推荐(0) 编辑
摘要:保证类型安全的联结属性(type-safe linkage) C++ARM中解释说type-safe linkage并不能100%的保证类型安全。既然它不那100%的保证类型安全,那么它就肯定是不安全的。统计分析显示:即便在很苛刻的情况下,C++ 出现单独的O-ring错误的可能性也只有0.3%。但我们一旦将6种这样的可能导致出错的情况联合起来放在一起,出错的几率就变得大为可观了。在软件中,我... 阅读全文
posted @ 2007-09-28 12:33 至尊王者 阅读(309) 评论(0) 推荐(0) 编辑