Posts Tagged MFC
CTray for MFC v1.0.0 Final
Posted by kingsamchen in PROGRAMMING on 2010 年 01 月 30 日
在以前的CTray的基础上改的,适用于以MFC为框架的工程。
增加了BallonTip的功能,重写了部分代码,并且最重要的是,改变了最初通过重写WinProc来实现托盘重建的方法。取而代之的是利用ON_REGISTER消息映射。但是由此产生的缺点就是,在CTray中增加了一个static变量保存任务栏重建消息。
仍然保存了原有的Tray消息处理模式,即在CWnd的子类中,转发消息到CTray的OnTrayProc。为什么要这么做呢?原因很简单。从软件工程和设计角度来说,各个类之间具有一定的独立性,能够进行模块化分离,即属于CTray部分的内容应独立从属于CTray。 连锁性太强的设计很容易代码变成spaghetti。虽然很多人不承认,但事实上,VB6的确是典型的反面教材……
虽然在CTray中Subclass窗体的消息可以避免使用MessageMap,但是会破坏原有的架构。所以才使用上述方法。
Read the rest of this entry »
Binary_Clock源代码导读
Posted by kingsamchen in PROGRAMMING on 2010 年 01 月 10 日
事先声明,此程序并非我所写,而是来自一位叫做透明de面具的尹大牛。之所以用这个程序来作为KC源代码导读系列的奠基性文章,主要有两个原因:
一是大尹一直是KC偶崇拜的一只大牛,既谓之大牛,其代码必有过人之处。其二是大尹从事C++&WTL开发,而KC从事(似乎这里言之尚早)C++&MFC开发,由于WTL和MFC的相似性,代码组织上容易理解。
不多说,直入主题!
Binary_Clock的文件组织相对有点复杂(WTL再怎么简化也不可能把C++弄成VB6那种状态),其目录下 主要有以下文件: \stdafx.h \stdafx.cpp // 用过MFC的人对上面两个文件肯定是再熟悉不过了 \resource.h // 资源定义文件,里面定义了大量控件等资源ID \Binary_Clock.h // 主程序头文件,很高兴,这个程序中,这个文件是空的≡ω≡ \Binary_Clock.cpp // 主程序实现文件,主要用于启动程序,创建并启动窗体及其循环 \MainDlg.h // 窗体的头文件 \MainDlg.cpp // 窗体代码实现文件,这里是重点了
我们先看stdafx.h,里面有一行很值得关注
extern CAppModule _Module;
和MFC一样,WTL同样是由一个完整的全局对象引导启动。一个应用程序就是一个类对象。不过不同的是,MFC的这行代码出现在主程序的h文件中,而且全局对象的名字一直叫做theApp
Read the rest of this entry »
CLabelLink
Posted by kingsamchen in PROGRAMMING on 2009 年 07 月 06 日
RT
写ARV的About窗体的时候,需要一个能够有超链接那样效果的Label。比如鼠标一上去,指针会变成手形状,颜色不同 .etc
但是很郁闷的是,MFC7没有类似的控件,而Static文本控件也不支持WM_MOUSEMOVE消息的自处理,虽然MFC9(VS2008)提供了Syslink控件(参考伟哥的那个飞信提取的~),但是我不太可能为了一个小控件改装VS2008。
于是我通过MSDN+Google,自己通过继承CStatic,写了一个能够设置字体颜色和设置手型的类——CLabelLink
今天很失败……
Posted by kingsamchen in PROGRAMMING on 2009 年 06 月 06 日
RT,很失败啊很失败
由于CArray的某个函数的行为和我预想的不一样,结果导致代码大面积完蛋……
Microsoft啊,你TMD玩我么?你也忒没素质了~CArray::GetSize()和CArray::GetCount()两个的实现一样的么……
哎,极度不爽,明天继续写~大不了老子用CList,不过效率就……关键是循环中CItemProperty的构造很没效率
不知道高考这几天能不能把AutorunLoadViewer搞定了……
一个自己封装的注册表操作类——CRegistry
Posted by kingsamchen in PROGRAMMING on 2009 年 05 月 24 日
上个星期KO的东西,本来应该提前发布的,无奈碰到Blogger被墙,找了N久的Blog替代,最后才决定到这里(其实最想的是自己弄一个独立的,但是没条件-。-)
写这个玩意儿是因为在写AutorunLoadviewer的时候,碰到了需要操作注册表的地方,但是MFC没有相应的Class,而ATL的那个CRegKey缺乏我需要的功能,而且CRegKey的所有Member Function都是inline的……所以就自己动手写了这个类
目前支持:CreateKey/Open/Write/Read/EnumKey/EnumValue/DeleteKey/DeleteValue
因为是按照个人需求写的,所以某些功能尚未添加,如果你需要的话,可以自己添加
PS:CRegistry继承自MFC的CObject,如果你需要在MFC之外使用,请自行去掉相关的代码
然后发布下代码
Read the rest of this entry »


COMMENTS