- 博客(34)
- 资源 (1)
- 收藏
- 关注
转载 C/C++中static关键字详解
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将
2013-04-23 17:34:40 682
转载 C++基础注意事项
1.传指针时,我们可以通过指针来修改它在外部所指向的内容。但如果要修改外部指针所指向的对象是不可能的。例如传递外部指针到函数内来分配空间,必须传递指针的指针或指针的引用。 2. char carry10 = 0; 编译器会将其后所有的东西都置0; 3. 函数返回值为const时,返回的东西付给一个类型相同的标示后其不能为左值; 4. const int *i; int
2013-03-31 12:09:52 727
转载 VC 对话框 只允许运行一个实例 ,如果有就激活到前端
VC 对话框 只允许运行一个实例 ,如果有就激活到前端的实现方法如下: 1。就是在其APP的CPP实现中,定义函数BOOL COnceApp::IsFirstInstance(CString title),并在其函数BOOL COnceApp::InitInstance()中,调用if (!IsFirstInstance(onlyTitle)) return FALSE; 即可。
2013-03-15 10:13:15 1057
转载 MFC中Static控件透明,重影,长度问题
做MFC编程,Static控件是会经常用到的了,而使Static控件背景透明,以及改变文本的内容、字体、颜色等属性,都是会比较容易碰到的情况。王道做法当然是继承CStatic然后重载OnPaint(),完全自己来画,这样能够获得最大的灵活性,但就是比较麻烦,像我这种比较懒的,就更喜欢用下面的懒方法了。同样创建一个CStatic的派生类,处理父窗口的反射消息WM_CTLCOLOR,即
2013-03-12 11:19:29 1565
转载 窗口和控件闪烁解决方案
对于MFC程序员来说做UI开发是痛苦的事情,不过大多数情况下我们都需要做这件事情,因为MFC自带的控件实在是太简陋了。这时候我们多半会涉及到自绘控件,随之而来的很可能就是窗口和控件的闪烁问题。这篇文章希望对MFC的窗口和控件闪烁问题做一个尽量全面的总结。 一、闪烁的原因 引起闪烁的原因很多,以至于网上有n多种解决闪烁问题的方法;如果你按照某一种方法做了仍然没有解决你的问题
2013-03-12 10:47:43 1718
转载 函数返回局部常量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意
2013-03-06 15:09:29 1094
转载 CListCtrl控件使用方法总结(二)
列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID )创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:
2013-02-26 16:49:17 837
转载 CListCtrl控件使用方法总结(一)
添加一个 list 控件 变量 m_list:POSITION pos = m_list.GetFirstSelectedItemPosition();if (pos != NULL) { int nItem = m_list.GetNextSelectedItem(pos); CString strText = m_list.GetItemText(nItem,4);
2013-02-26 15:44:38 863
转载 CComPtr && CComQIPtr
CComPtr && CComQIPtrCOM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但是,即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,例如:void SomeApp( IHe
2013-02-26 15:02:47 736
转载 LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
UNICODE:用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。 MBCS:多字节字符集,是不定长表示世界文字的一种编码。MBCS表示英文字母
2013-02-22 09:44:33 503
转载 CComboBox使用技巧
1. CComboBox风格CBS_AUTOHSCROLL //自动水平滚动条 CBS_DISABLENOSCROLL //选中时始终显示滚动条 CBS_DROPDOWN //下拉式 CBS_DROPDOWNLIST //下拉列表 CBS_HASSTRINGS //为字符串提供Ge
2013-02-21 17:26:25 658
转载 CComboBox控件的下拉列表框,用鼠标在该ListBox上滑动的时候显示出当前具有focus的item项的索引
// 在CComboBox控件的下拉列表中滑动鼠标,会显示当前focus的item项,同时会将对应的item项以蓝色标记出来。通过spy++可以看到父窗口CComboBox控件收到一个WM_CTLCOLORLISTBOX消息。这里示例是得到该item项的索引值,同时将它显示到主对话框窗口的标题栏上。// 需要重写CComboBox类,添加WindowProc虚函数,在虚函数中加入如下代
2013-02-21 17:24:36 1076
转载 /MD, /MDD, /ML, /MT,/MTD(使用运行时库)
1. VC编译选项多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd)2. C 运行时库 库文件Single thread(static link) ML libc.libD
2013-02-04 14:19:21 513
转载 ANSI、MBCS、UNICODE字符集
1.三种计算机字符集 计算机字符集可归类为三种,单字节字符集(SBCS)、多字节字符集(MBCS)和宽字符集(即Unicode字符集)。 单字节字符集(SBCS): 单字节字符集,称之为SBCS,它的所有字符都只有一个字节的长度。常见字符集有:ASCII码和扩展ASCII码。SBCS字符串由一个零字节结尾,数据类型是char。 ASCII码
2013-02-04 11:54:34 682
转载 判断指定位置是否存在已知名字的文件夹,若不存在,新建一个
#include#include#include using namespace std;//判断一个文件夹是否存在,如果不存在则创建这个文件夹bool DirExist(const TCHAR *pszDirName) { WIN32_FIND_DATA fileinfo; TCHAR _szDir[_MAX_PATH];
2013-02-01 15:46:12 628
转载 关于内存中栈和堆的区别[转]
1、内存分配方面: 堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、申请方式方面:
2013-01-24 23:10:10 372
转载 正则表达式30分钟入门教程
本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :)别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有你想像中的那么困难。当然,如果你看完了这篇教程之后,发现自己明
2013-01-16 10:09:01 306
转载 Automatic Reference Counting (ARC)
ios上内存管理一直让人很头疼。手动管理内存经常忘掉release或autorelease,或者因为release多了、retain少了导致空指针引用程序崩溃,还要经常按COMMAND+SHIFT+B,岂止头疼,简直蛋疼有木有。虽然objective-c 2.0支持垃圾收集器(Garbage Collection,简称GC),但是垃圾收集器只能在MAC程序上开启,ios上没办法用。
2013-01-15 19:33:48 378
转载 VC命名规则
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。前缀类型a数组 (Array)b布尔值 (Boolean)by字节 (Byte) == 8 bitc有符号字符 (Char)cb无符号字
2013-01-08 23:46:23 784
原创 sqlite中判断表是否存在
在sqlite中判断表是否存在,tableName为要判断的表名SELECT count(*) FROM sqlite_master WHERE type='table' AND name='tableName';
2013-01-07 08:44:47 856
转载 C语言判断文件夹或者文件是否存在的方法
C语言判断文件夹或者文件是否存在的方法方法一:access函数判断文件夹或者文件是否存在函数原型: int access(const char *filename, int mode);所属头文件:#include filename:可以填写文件夹路径或者文件路径mode:0 (F_OK) 只判断是否存在2 (R_OK) 判断读取权限
2013-01-05 09:41:22 959
转载 字符串copy效率大比拼
程序中总难免会将字符串copy来copy去,常见的方法如:strncpy、snprintf、strlen+memmove等。(strcpy、sprintf之流就不讨论了,由于容易引入目标缓冲区溢出、不能有效保证尾部/0等问题,在实际工程项目中很少使用---如果不怕被bs可以尝试下。其他非主流方如bcopy、memccpy也不罗嗦了,华而不实,本质与上述三种方法并无区别。) 之前看过
2013-01-04 13:47:57 1362
转载 关于字符转换的讨论
char * 转换为TCHAR类型??直接转换,TCHAR相当于char了char * s;TCHAR * s1=(TCHAR *)s; 回复人: dysxq() (2001-12-21 21:26:25) 得0分 要看你的程序设置是ANSI还是UNICODE, 如果是ANSI,直接转,如果是UNICODE,TCHAR相当于WCHAR, 要用mbstowcsz转一下 回复人
2013-01-04 11:29:50 481
转载 sprintf中%S与%s区别
// 输出中文char szA[8];WCHAR szW[8];sprintf(szA, "%s", L"和平"); // 乱码,四个字节sprintf(szA, "%s", "和平"); // 和平sprintf(szA, "%S", L"和平"); // 零字节sprintf(szA, "%S", "和平"); /
2013-01-04 11:20:24 2487
转载 String,CString,TCHAR*,char*之间区别和联系
TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符#ifdef UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endif所以用MBCS来build时,TCHAR是char,使用
2013-01-04 10:34:16 6821
转载 printf Type Field Characters
The type character of the format specification indicates that the corresponding argument is to be interpreted as a character, string, or number. The type character is the only required format field,
2013-01-04 10:32:14 721
转载 C++检测文件或者目录是否存在
1.C++:#include #include using namespace std;#define FILENAME "stat.dat"int main(){ fstream _file; _file.open(FILENAME,ios::in); if(!_file) { cout<<FILENAME<<"没有被创建"
2012-12-27 15:16:52 1301
转载 GetSafeHwnd()和GetSafeHandle()的主要区别
GetSafeHwnd()和GetSafeHandle()的主要区别:1.使用者不同:(1)窗体使用:GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的对HWND指向的窗体进行所需的操作了;(2)GDI对象使用:GetSafeHandle(),用于获取GDI对象的句柄。注意:在使用指针时强烈建议这
2012-12-27 13:44:20 1007
转载 单元测试工具Numega
1 前言我在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。NuMega是一个动态测试工具,主要应用于白盒测试。该工具的特点是学习简单、使用方便、功能有效。NuMega共有三个独立的子功能——BoundsChecker、TrueCoverage、TrueTime。BoundsChecker为代码检错工具,TrueCoverage为测试覆盖率统计
2012-12-25 16:26:08 558
转载 VC 获取系统特殊文件夹的路径
如果需要,请在StdAfx.h中添加 #include TCHAR MyDir[_MAX_PATH]; SHGetSpecialFolderPath(this->GetSafeHwnd(),MyDir,CSIDL_APPDATA,0);AfxMessageBox(MyDir);其中第三个参数CSIDL_APPDATA可以为以下的值: CSIDL_BITB
2012-12-25 09:29:12 784
转载 VS2010常用快捷键及修改
VS2010快捷键设置1.进入工具----选项 对话框2.选择 环境---->键盘3.在 【显示命令包含】 下面的对话框中输入“对齐”关键字,然后就会在这个编辑框下面一个文本窗口中显示关于“对齐”一系列的“某某对齐”操作命令,选中你想查看的,就会在【选定命令的快捷键】一栏中显示其快捷键了,也可以输入其他的文字,比如说“在浏览器中查看”、“注释选择内容”等。
2012-12-19 16:13:09 630
转载 LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅
2012-12-18 16:07:09 571
转载 如何在项目中引入.h、.lib和dll、以及.cpp
一、如何在项目中引入.h、.lib和dll、以及.cpp 一直搞不清楚.h、.lib和dll在工程里怎么引入,稀里糊涂的。这次使用sqlite做个试验。 目录如下: .. include lib dll 工程\注意:工程是最原是的MFC标准项目,没有对环境变量做任何修改:
2012-12-18 16:02:50 7498
转载 VC调试入门
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从
2012-03-06 16:32:11 568
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人