首页

深度理解:CTreeCtrl展开和收起消息探究  

在使用树控件(CTreeCtrl)的过程中,有时候需要捕获树结点的展开(Expand)和收起(Collapse)事件并做一些自定义的操作。 今天就来探究一下树结点的展开和收起这两种消息,我们使用到了微软开发的小工具Control Spy,这个工具可以捕获Windows平台上各个控件的消息流。 TVN_ITEMEXPANDING和TVN_ITEMEXPANDED消息的触发 每当树控件展开之前,树控...

实战经验:使用ClipChildren属性减少界面闪烁  

我们先做一个实验,来说明ClipChildren属性对界面绘制的影响。 新建一个基于对话框的MFC工程,我们在对话框模板的右下角,添加一个测试按钮,这个按钮代表对话框上的一个子控件。 我们分别在对话框的OnPaint和OnSize处理函数中,添加一段绘制矩形框的代码。用以模拟对话框重绘的操作。 void CClipChildrenTestDlg::OnPaint() { if (IsI...

深度理解:赋值与比较的性能分析  

有时候,事情的结果会违反我们的经验常识。 例如,我们设置一个对象的成员值,有两种方式:一种是直接赋值,一种是先比较值是否相等,仅在不相等的情况下,才执行赋值。 日常经验会让我们觉得:第二种可能比较高效,因为在赋值之前先做了一个判断,省去了每次都赋值的成本。真的是这样吗? 我们来做一个实验,验证一下我们的想法。 #include "stdafx.h" class CA ...

实战经验:在DLL中支持多语言  

在主程序中支持多语言 在主程序中建立不同的语言资源字符串,并调用API函数SetProcessPreferredUILanguages设置当前语言就可以实现多语言特性。 在DLL中支持多语言 1) 因为DLL是主程序加载阶段载入到进程地址空间的,所以DLL中使用的语言也会受到SetProcessPreferredUILanguages函数的影响。根据这一原理,我们可以在DLL的资源中也添加各种不...

深度理解:如何返回一个CString对象  

考察以下程序片段 LPCTSTR GetString1() { CString str(_T("")); str.Format(_T("%s"), _T("Hello")); return str; } CString GetString2() { CString str(_T("&quo...

实战经验:pimp技法实现面向接口编程  

在大型工程中,编译时依赖会逐渐成为一个问题。每当我们修改了组件的内部实现,都影响到了组件的客户,导致客户代码重新编译,这种情况对于大型工程往往是不可接受的,微软的COM技术尝试通过接口解决此问题,但是不足之处是:COM技术依赖注册表实现组件的定位,这大大限制了组件的跨平台能力。今天,我们来讲讲pimp技法,实现轻量级的面向接口编程。 示例代码 =====================MyCo...

深度理解:#pragma once防止文件重复包含  

今天的主题,做C++的朋友可能都不会太陌生。此文的目的,主要是深挖一下这个#pragma once。 示例代码 =====================MyBase.h===================== #pragma message("Including MyClass.h") #pragma once class CMyBase { public...

实战经验:避免在组件接口中使用unsigned  

示例代码 =====================MyList.h===================== #pragma once #include <windows.h> class CMyList { public: CMyList(void) {} ~CMyList(void) {} public: UINT GetSize1() c...

深度理解:类前置声明的使用

首先我们看这样一个示例程序: =====================CX.h===================== #pragma once class CX { public: CX(void); ~CX(void); }; =====================CX.cpp===================== #include "...

小技巧:解决CentOS上SSH登录慢的问题

测试环境 CentOS 7.3 问题描述 使用SSH进行远程登录,输入账号后,过了大概20秒才出现密码提示符,输入密码后,登录成功。 问题原因 1) 这里首先修改GSSAPIAuthentication为no,指明禁用GSSAPI认证方式。 GSSAPI,全称为:Generic Security Services Application Program Interface。它是由IETF制定的一个...