代码改变世界

VC5.0中的ATL的一个有趣的bug

2011-06-13 07:10 by menggucaoyuan, 424 阅读, 0 推荐, 收藏, 编辑
摘要:从VC5.0开始,ATL正式作为VC的一部分开始发布,可能M$对它的成熟度已经很自信。在阅读这个版本的ATL的源码时,ATLWIN.cpp中有如下代码:BOOL CDynamicChain::SetChainEntry(DWORD dwChainID, CMessageMap* pObject, DWORD dwMsgMapID /* = 0 */){// first search for an existing entry for(int i = 0; i < m_nEntries; i++) { if(m_pChainEntry[i] != NULL && m_pCh 阅读全文

ATL2.1版的CString分析

2011-06-12 07:35 by menggucaoyuan, 1374 阅读, 0 推荐, 收藏, 编辑
摘要:经常使用MFC做界面开发的人,可能会经常使用CString这个字符串类。个人也经常使用这个类,前几天在翻阅ATL2.1的源码时,发现了CString类的源码,就顺便把它解剖下,虽然它比起现在高级版本的CString类,还比较原始,但是原理应该是一致的。 阅读全文

翻译: 如何改变MFC应用程序主窗口的类名

2011-06-10 07:23 by menggucaoyuan, 1964 阅读, 0 推荐, 收藏, 编辑
摘要:MFC自动创建的应用程序中,主窗口的类名是固定的。但在许多情况下,你可能希望自己拟定MFC的主窗口的类名。 如果你想进行进程间通信(IPC),这种技术就更显得简洁有效。最早的实现不同进程间通信的方法是发送消息,但是发送消息需要知道发送的目标对象,即确定目标窗口,识别出它的ID。 阅读全文

程序员应该知道的关于Windows API、CRT和STL二三事

2011-06-09 00:19 by menggucaoyuan, 5025 阅读, 8 推荐, 收藏, 编辑
摘要:本文是为了帮助一些人弄清一些关于Windows API, C运行时程序库(CRT), 和标准C++库(STL)的基本概念。有很多人甚至是有经验的程序员在这些概念上是含糊不清的甚至是有错误观点。如果你想知道他们是在什么基础上实现的并且一直没时间弄清楚这些概念,请花费点时间阅读下本文。 阅读全文