<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Angus_pei的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Angus_pei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Angus_pei]]></copyright><item><title><![CDATA[C/C++中static关键字详解]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8840919</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8840919</guid><author>Angus_pei</author><pubDate>Tue, 23 Apr 2013 17:34:40 +0800</pubDate><description><![CDATA[静态变量作用范围在一个文件内，程序开始时分配空间，结束时释放空间，默认初始化为0，使用时可以改变其值。

    静态变量或静态函数只有本文件内的代码才能访问它，它的名字在其它文件中不可见。
用法1：函数内部声明的static变量，可作为对象间的一种通信机制
    如果一局部变量被声明为static，那么将只有唯一的一个静态分配的对象，它被用于在该函数的所有调用中表示这个变量。这个对象将]]></description><category></category></item><item><title><![CDATA[C++基础注意事项]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8742475</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8742475</guid><author>Angus_pei</author><pubDate>Sun, 31 Mar 2013 12:09:52 +0800</pubDate><description><![CDATA[1.传指针时，我们可以通过指针来修改它在外部所指向的内容。但如果要修改外部指针所指向的对象是不可能的。例如传递外部指针到函数内来分配空间，必须传递指针的指针或指针的引用。

　　2. char carry10 = 0; 编译器会将其后所有的东西都置0；

　　3. 函数返回值为const时，返回的东西付给一个类型相同的标示后其不能为左值；

　　4. const int *i; int]]></description><category></category></item><item><title><![CDATA[VC 对话框 只允许运行一个实例 ,如果有就激活到前端]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8676455</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8676455</guid><author>Angus_pei</author><pubDate>Fri, 15 Mar 2013 10:13:15 +0800</pubDate><description><![CDATA[VC 对话框 只允许运行一个实例 ,如果有就激活到前端的实现方法如下：

　　１。就是在其APP的CPP实现中，定义函数BOOL COnceApp::IsFirstInstance(CString title)，并在其函数BOOL COnceApp::InitInstance()中，调用if
 (!IsFirstInstance(onlyTitle))   return FALSE;　即可。]]></description><category></category></item><item><title><![CDATA[MFC中Static控件透明，重影，长度问题]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8662806</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8662806</guid><author>Angus_pei</author><pubDate>Tue, 12 Mar 2013 11:19:29 +0800</pubDate><description><![CDATA[做MFC编程，Static控件是会经常用到的了，而使Static控件背景透明，以及改变文本的内容、字体、颜色等属性，都是会比较容易碰到的情况。

王道做法当然是继承CStatic然后重载OnPaint()，完全自己来画，这样能够获得最大的灵活性，但就是比较麻烦，像我这种比较懒的，就更喜欢用下面的懒方法了。

同样创建一个CStatic的派生类，处理父窗口的反射消息WM_CTLCOLOR，即]]></description><category></category></item><item><title><![CDATA[窗口和控件闪烁解决方案]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8662585</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8662585</guid><author>Angus_pei</author><pubDate>Tue, 12 Mar 2013 10:47:43 +0800</pubDate><description><![CDATA[对于MFC程序员来说做UI开发是痛苦的事情，不过大多数情况下我们都需要做这件事情，因为MFC自带的控件实在是太简陋了。这时候我们多半会涉及到自绘控件，随之而来的很可能就是窗口和控件的闪烁问题。这篇文章希望对MFC的窗口和控件闪烁问题做一个尽量全面的总结。

 

    一、闪烁的原因

    引起闪烁的原因很多，以至于网上有n多种解决闪烁问题的方法；如果你按照某一种方法做了仍然没有解决你的问题]]></description><category></category></item><item><title><![CDATA[函数返回局部常量]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8642497</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8642497</guid><author>Angus_pei</author><pubDate>Wed, 06 Mar 2013 15:09:29 +0800</pubDate><description><![CDATA[一般的来说，函数是可以返回局部变量的。 局部变量的作用域只在函数内部，在函数返回后，局部变量的内存已经释放了。因此，如果函数返回的是局部变量的值，不涉及地址，程序不会出错。但是如果返回的是局部变量的地址(指针)的话，程序运行后会出错。因为函数只是把指针复制后返回了，但是指针指向的内容已经被释放了，这样指针指向的内容就是不可预料的内容，调用就会出错。准确的来说，函数不能通过返回指向栈内存的指针(注意]]></description><category></category></item><item><title><![CDATA[CListCtrl控件使用方法总结（二）]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8614548</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8614548</guid><author>Angus_pei</author><pubDate>Tue, 26 Feb 2013 16:49:17 +0800</pubDate><description><![CDATA[列表控件可以看作是功能增强的ListBox，它提供了四种风格，而且可以同时显示一列的多中属性值。
MFC中使用CListCtrl类来封装列表控件的各种操作。
通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID )创建一个窗口，


dwStyle中可以使用以下一些列表控件的专用风格：]]></description><category></category></item><item><title><![CDATA[CListCtrl控件使用方法总结（一）]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8614017</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8614017</guid><author>Angus_pei</author><pubDate>Tue, 26 Feb 2013 15:44:38 +0800</pubDate><description><![CDATA[添加一个 list 控件 变量 m_list：
POSITION pos = m_list.GetFirstSelectedItemPosition();
if (pos != NULL)
 {
   int nItem = m_list.GetNextSelectedItem(pos);
   CString strText =  m_list.GetItemText(nItem,4);]]></description><category></category></item><item><title><![CDATA[CComPtr && CComQIPtr]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8613801</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8613801</guid><author>Angus_pei</author><pubDate>Tue, 26 Feb 2013 15:02:47 +0800</pubDate><description><![CDATA[CComPtr && CComQIPtr


COM接口指针很危险，因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release，一旦出现问题，就会造成对象不能被正常释放，或者对象被重复删除，造成程序崩溃。所以使用COM接口，必须小心翼翼才行。
但是，即使所有的代码中，都正确的AddRef和Release，也不一定能保证万无一失，例如：
void SomeApp( IHe]]></description><category></category></item><item><title><![CDATA[LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8601231</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8601231</guid><author>Angus_pei</author><pubDate>Fri, 22 Feb 2013 09:44:33 +0800</pubDate><description><![CDATA[UNICODE：用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符，可'A'在UNICODE下面是两个字符,高字符用0填充，而且汉字'程'在ASCII下面是两个字节，而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字，据统计，用两个字节可以编码现存的所有文字而没有二义。  
MBCS：多字节字符集，是不定长表示世界文字的一种编码。MBCS表示英文字母]]></description><category></category></item><item><title><![CDATA[CComboBox使用技巧]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8599472</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8599472</guid><author>Angus_pei</author><pubDate>Thu, 21 Feb 2013 17:26:25 +0800</pubDate><description><![CDATA[1. CComboBox风格

CBS_AUTOHSCROLL           //自动水平滚动条  
CBS_DISABLENOSCROLL   //选中时始终显示滚动条  
CBS_DROPDOWN              //下拉式  
CBS_DROPDOWNLIST       //下拉列表  
CBS_HASSTRINGS             //为字符串提供Ge]]></description><category></category></item><item><title><![CDATA[CComboBox控件的下拉列表框，用鼠标在该ListBox上滑动的时候显示出当前具有focus的item项的索引]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8599459</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8599459</guid><author>Angus_pei</author><pubDate>Thu, 21 Feb 2013 17:24:36 +0800</pubDate><description><![CDATA[// 在CComboBox控件的下拉列表中滑动鼠标，会显示当前focus的item项，同时会将对应的item项以蓝色标记出来。通过spy++可以看到父窗口CComboBox控件收到一个WM_CTLCOLORLISTBOX消息。这里示例是得到该item项的索引值，同时将它显示到主对话框窗口的标题栏上。


// 需要重写CComboBox类，添加WindowProc虚函数，在虚函数中加入如下代]]></description><category></category></item><item><title><![CDATA[/MD, /MDD, /ML, /MT,/MTD(使用运行时库)]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8568811</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8568811</guid><author>Angus_pei</author><pubDate>Mon, 04 Feb 2013 14:19:21 +0800</pubDate><description><![CDATA[1. VC编译选项

多线程(/MT)
多线程调试(/MTd)
多线程 DLL (/MD)
多线程调试 DLL (/MDd)



2. C 运行时库                                                库文件
Single thread(static link) ML                       libc.lib
D]]></description><category></category></item><item><title><![CDATA[ANSI、MBCS、UNICODE字符集]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8568458</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8568458</guid><author>Angus_pei</author><pubDate>Mon, 04 Feb 2013 11:54:34 +0800</pubDate><description><![CDATA[1.三种计算机字符集

   计算机字符集可归类为三种，单字节字符集(SBCS)、多字节字符集(MBCS)和宽字符集(即Unicode字符集)。

 

单字节字符集(SBCS)：

    单字节字符集，称之为SBCS，它的所有字符都只有一个字节的长度。常见字符集有：ASCII码和扩展ASCII码。SBCS字符串由一个零字节结尾，数据类型是char。

 

ASCII码]]></description><category></category></item><item><title><![CDATA[判断指定位置是否存在已知名字的文件夹，若不存在，新建一个]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8563390</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8563390</guid><author>Angus_pei</author><pubDate>Fri, 01 Feb 2013 15:46:12 +0800</pubDate><description><![CDATA[#include
#include
#include 

using namespace std;

//判断一个文件夹是否存在，如果不存在则创建这个文件夹
bool DirExist(const TCHAR  *pszDirName)   
{   
    WIN32_FIND_DATA   fileinfo;   
    TCHAR   _szDir[_MAX_PATH];]]></description><category></category></item><item><title><![CDATA[关于内存中栈和堆的区别[转]]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8540114</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8540114</guid><author>Angus_pei</author><pubDate>Thu, 24 Jan 2013 23:10:10 +0800</pubDate><description><![CDATA[1、内存分配方面：

    堆：一般由程序员分配释放， 若程序员不释放，程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事，分配方式是类似于链表。可能用到的关键字如下：new、malloc、delete、free等等。

    栈：由编译器(Compiler)自动分配释放，存放函数的参数值，局部变量的值等。其操作方式类似于数据结构中的栈。

2、申请方式方面：]]></description><category></category></item><item><title><![CDATA[正则表达式30分钟入门教程]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8508179</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8508179</guid><author>Angus_pei</author><pubDate>Wed, 16 Jan 2013 10:09:01 +0800</pubDate><description><![CDATA[本文目标

30分钟内让你明白正则表达式是什么，并对它有一些基本的了解，让你可以在自己的程序或网页里使用它。

如何使用本教程

最重要的是——请给我30分钟，如果你没有使用正则表达式的经验，请不要试图在30秒内入门——除非你是超人 :)

别被下面那些复杂的表达式吓倒，只要跟着我一步一步来，你会发现正则表达式其实并没有你想像中的那么困难。当然，如果你看完了这篇教程之后，发现自己明]]></description><category></category></item><item><title><![CDATA[Automatic Reference Counting (ARC)]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8507096</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8507096</guid><author>Angus_pei</author><pubDate>Tue, 15 Jan 2013 19:33:48 +0800</pubDate><description><![CDATA[ios上内存管理一直让人很头疼。

手动管理内存经常忘掉release或autorelease，或者因为release多了、retain少了导致空指针引用程序崩溃，还要经常按COMMAND+SHIFT+B，岂止头疼，简直蛋疼有木有。

虽然objective-c 2.0支持垃圾收集器（Garbage Collection，简称GC），但是垃圾收集器只能在MAC程序上开启，ios上没办法用。]]></description><category></category></item><item><title><![CDATA[VC命名规则]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8483482</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8483482</guid><author>Angus_pei</author><pubDate>Tue, 08 Jan 2013 23:46:23 +0800</pubDate><description><![CDATA[匈牙利命名法关键是：

标识符的名字以一个或者多个小写字母开头作为前缀；

前缀之后的是首字母大写的一个单词或多个单词组合，该单词要指明变量的用途。




前缀

类型


a
数组 (Array)


b
布尔值 (Boolean)


by
字节 (Byte) == 8 bit


c
有符号字符 (Char)


cb
无符号字]]></description><category></category></item><item><title><![CDATA[sqlite中判断表是否存在]]></title><link>https://blog.youkuaiyun.com/Angus_pei/article/details/8475327</link><guid>https://blog.youkuaiyun.com/Angus_pei/article/details/8475327</guid><author>Angus_pei</author><pubDate>Mon, 07 Jan 2013 08:44:47 +0800</pubDate><description><![CDATA[在sqlite中判断表是否存在,tableName为要判断的表名

SELECT count(*) FROM sqlite_master WHERE type='table' AND name='tableName';]]></description><category></category></item></channel></rss>