首页

实战经验:SetWindowLongPtr在开发64位程序的使用方法

在开发某些应用时,需要替换掉原来系统默认的WndProc,使用我们自己定义的WndProc,在32位程序开发下,我们可以使用Win32 API SetWindowLong。以下是该函数的描述: SetWindowLong function Changes an attribute of the specified window. The function also sets the 32-bit ...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:05月10日 |
  • 浏览:10272 |
  • 评论已关闭 条评论

实战经验:一种按需创建的单件模式

在MFC框架程序中,有一个theApp的唯一全局CWinApp对象,该对象在进入程序入口点之前就开始构造,在程序退出时才离开作用域进行析构。 今天我们探究一种按需创建的单件模式,该模式的特点在于:仅在需要时才创建单件对象。以下先给出演示代码: 先定义一个CTestManager类,该类中定义了一个静态的工厂方法 GetInstance,然后为了使用上的方便,还定义了一个宏theTestMgr。最后...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:05月10日 |
  • 浏览:1513 |
  • 评论已关闭 条评论

小技巧:关于CRichEditCtrl的最大字数限制

初次使用CRichEditCtrl控件,有些方法还不熟悉。碰到过这样的情况:使用CRichEditCtrl的StreamIn一个大型文本文件(大约10MB左右)后,显示在控件的内容不完整。一开始还以为是StreamIn的回调函数处理流程有问题,调试过后,发现原因在此:默认情况下,CRichEditCtrl的最大字节数限制为32768,也即:最多只会Stream In这么多Bytes,并且用户无法再...
  • 阅读全文 |
  • 分类:小技巧 |
  • 发表于:05月03日 |
  • 浏览:3770 |
  • 评论已关闭 条评论

深度理解:多个auto_ptr同时引用同一个资源对象下的释放问题及赋值问题

首先说一句,auto_ptr已经在C++ 11中已经标注为Deprecated,也即你可以继续使用这玩意,但是在C++持续的演进中,这玩意将慢慢不被主流编译器支持。”Deprecated”,说白了,就是我们在将来可能不支持这个了,现在你可以继续使用,编译器也将继续可以编译通过,趁现在有时间,请尽早使用其他改进方法吧。 1. 多个auto_ptr引用同一个资源对象 下面看一段...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:04月29日 |
  • 浏览:2025 |
  • 评论已关闭 条评论

实战经验:CRichEditCtrl的使用方法

RichEditCtrl是一款富文本编辑器控件,相对于CEdit来说,其功能更加强大。另外,它自带RTF格式文本的解析功能。今天就总结一下我在使用这款控件的一些经验。 1. 关于RichEditCtrl的版本 随着Windows每次版本的发布,RichEditCtrl的版本也在不断升级。从最初的1.0版本一直到目前最新的4.1版本。以下版本历史来自的MSDN: Rich Edit version ...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:04月26日 |
  • 浏览:4019 |
  • 评论已关闭 条评论

深度理解:FindClose未调用导致的File内核对象的引用计数问题

应用程序启动后,不可避免的会使用到操作系统提供的文件系统API,比如CreateFile等。当我们有枚举文件或文件夹的需求时,会使用到系统提供的FindFirstFile/FindNextFile/FindClose函数族。 比如,如下的代码为枚举指定路径下所有的文件夹和文件: void EnumerateFiles(LPCTSTR path) { WIN32_FIND_DATA ...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:04月21日 |
  • 浏览:2547 |
  • 评论已关闭 条评论

实战经验:自定义函数在STL比较函数sort中的使用

STL库中有自带的排序函数族,今天就来讲讲其中比较常用的sort函数。 该函数可以对容器进行排序,比如如下的代码: vector<int> vec; vec.push_back(3); vec.push_back(5); vec.push_back(6); vec.push_back(1); sort(vec.begin(), vec.end()); 经过上述sort...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:04月19日 |
  • 浏览:2158 |
  • 评论已关闭 条评论

实战经验:如何检测CMFCTabCtrl控件标签页切换事件

MFC库中经常会使用到的一个控件是Tab标签页控件,这个控件在展现多个平级数据集非常合适。 与控件对应的,是MFC库中的两个类:CMFCTabCtrl和CMFCBaseTabCtrl,其中CMFCTabCtrl继承自CMFCBaseTabCtrl,而CMFCBaseTabCtrl又继承自CWnd。 开发应用程序过程中会有一个需求:Tab标签页何时进行了切换? 下面介绍两个消息: AFX_WM_CH...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:04月18日 |
  • 浏览:6636 |
  • 评论已关闭 条评论

实战经验:TVN_SELCHANGED和TVN_SELCHANGING通知消息的应用

在使用CTreeCtrl控件时,有两个通知消息我们会经常用到,分别是: TVN_SELCHANGING: 这个消息表示树结点即将从一个切换至另一个,但是请注意,切换只是即将开始,还没有真正进行。 TVN_SELCHANGED: 这个消息表示树结点已经完成从一个切换到另一个,从界面效果来看,当前选中的树结点的高亮色从一个变更到了另一个了。   TVN_SELCHANGING消息应用: 对于...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:04月14日 |
  • 浏览:5964 |
  • 评论已关闭 条评论

小技巧:使用appcmd来自动化部署IIS网站

在工作中,时常会花费宝贵的时间做重复的事情,比如使用IIS图形界面部署一个新网站。今天我们就来聊一下如何使用appcmd这一工具来简化这个工作。 appcmd,是一个微软操作系统自带的命令行工具,位于系统的C:\windows\system32\inetsrv路径下(对于Win7 32位操作系统而言)。我们可以使用“appcmd /?”这一指令查看此工具的基本用法: ===============...
  • 阅读全文 |
  • 分类:小技巧 |
  • 发表于:04月11日 |
  • 浏览:4144 |
  • 评论已关闭 条评论