摘要:MessageBox、::MessageBox 、AfxMessageBox三者的区别以前知道这几个函数有差别,但也没有去细究,最近隔了很久没写VC程序了,结果写到使用MESSAGEBOX时出错了,还为之费解,于是上网找了一下资料,清楚了这三个函数的区别,所以写此文章(参考了大量其他人的所写的资料)。使自己能长记性,同时也希望对一些不甚了解的人有所帮助。三者的本质区别如下:Windows API: MessageBox();CWnd::MessageBox(); MFC: AfxMessageBox();其中CWnd::MessageBox() 与 AfxMessageBox()都是对 API
阅读全文
随笔分类 - C++/C
摘要:搜到了wiki上的一篇文章——<List of performance analysis tools>,链接地址:http://en.wikipedia.org/wiki/List_of_performance_analysis_tools 这篇wiki写的是相当的全面,建议有兴趣的看看~~对于在性能调优这一领域的尝试有一个小小的尝试吧~~
阅读全文
摘要:在过去十年间,涌现了许多新的软件技术和平台。每种新技术都要求掌握专门的知识才能创建出性能良好的应用程序。现在,由于各种 Internet 技术(如博客)使失望的用户可轻松地否定您的应用程序,因此您确实需要将性能放到首要位置。在计划早期,就应添加响应性能要求并创建原型来确定可能的技术限制。在整个开发过程中,还应衡量应用程序的各个性能方面以发现可能的性能下降,同时确保速度较慢情形下的测试人员文件并跟踪其错误。即使拥有最好的计划,仍必须在产品开发过程中调查性能问题。在本文中,我们将向您展示如何使用 Visual Studio® Team System Development Edition
阅读全文
摘要:qsort()应该就是用的快排。貌似是以数据块的方式移动数据,速度较快。 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*));解释: qsort ( 数组名 ,元素个数,元素占用的空间(sizeof),比较函数) 比较函数是一个自己写的函数 遵循 int com(const void *a,const void *b) 的格式。当a b关系为 > < = 时,分别返回正值 负值 零 (或者相反)。使用a b 时要强制转换类型,从void * 转换回应有的类型后
阅读全文
摘要:做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。 拿我出的“AC的策略”这题来说,需要对数组t的第0到len.
阅读全文
摘要:原帖地址:http://hi.baidu.com/yanfei_1/blog/item/a0a538331f5256f91a4cffba.htmlC++的标准模板库(Standard Template Library,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。.一. vector1.声明: 一个vector类似于一个动态的一维数组。 vector<int> a; //声明一个元素为int类型的vector a vectot<MyType> a; //声明一个元素为My
阅读全文
摘要:std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下std map内部数据的组织,std map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在std map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名
阅读全文
摘要:Visual C++内存泄露检测—VLD工具使用说明一. VLD工具概述Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。二. VLD下载http://www.codeproject.com/tools/visualleakdetector.asp本文后附有vld1.0的工具包,下载解包后就可使用。三. VLD安装方法一:解压之后得到vld.h, vldapi.h, vld.lib
阅读全文
摘要:http://code.ijinshan.com/ http://search.csdn.net/CSDN搜索,CSDN还是有非常多的编程资源的,用它的搜索能搜出不少东西。代码类别也比较全面。http://snippets.org/简单实用的代码收集网站,强力推荐。比如你要找个DES加密,要找个数据压缩,找个INI文件操作的C代码等,均能手到擒来。http://www.codase.com/index.html它是一个代码搜索引擎,特别是搜索c/c++的开源代码,可以通过函数名、类名等搜索,很酷噢http://sourceforge.net/有名的开源代码库,只要能想到的功能,上面都有对应的源
阅读全文
摘要:1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDontLinger = FALSE; setsockopt(s,SOL_
阅读全文
摘要:char *GetBuffer(n)当n大于0时,是为CString变量分配一个长度为n的字节数组,返回值是这个数组的地址当n等于0时,返回CString变量本身拥有的字符串数组的头ReleaseBuffer一般用在GetBuffer,因为在调用了GetBuffer后变量本身会给自己上锁,于是所有能改变自身值的函数都不能用(如果Left,Mid),要用ReleaseBuffer解锁一.函数原型CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength );throw( CMemoryException );Return ValueAn LPTS
阅读全文
摘要:可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。为了使使GetSystemMetrics的功能,我们以获取系统分辨率为例,并将其中的两个值用TextOut输出到窗体中。第一步:用GetSystemMetrics获取屏幕的宽度和高度int x, y;x = GetSystemMetrics(SM_CXSCREEN); //屏幕宽度 y = GetSystemMetrics(SM_CYS.
阅读全文
摘要:_itoa功能:把一整数转换为字符串用法:char * _itoa(int value, char *string, int radix); 详细解释: _itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,之后再保存在string中. 备注:该函数的头文件是"stdlib.h" 程序例: #include <stdlib.h> #include <stdio.h> int main()
阅读全文
摘要:/*try{ ProTestMode(FALSE, FALSE);}catch(CException *e){TCHAR szCause[1024];e->GetErrorMessage(szCause,1024);TRACE(_T("Exception: %s/n"),szCause);//AfxMessageBox(szCause);}*/
阅读全文
摘要:以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn--------------------------------------------------------------------------------1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理.
阅读全文
摘要:第三步设置风格1、通过第一步和第二步,我们已经创建出了一个有一行并且有四列的内容的REPORT风格的List Control。可是,只是简单的方框中有一行数据而已,我们能不能让它们看起来更漂亮呢?或者我们能不能让它们可以被选取从而让我们可以做一些别的操作呢?当然可以,这一步我们就来看看简单的风格设置。2、要学习风格设置,我们首先来看一个函数:CListCtrl::SetExtendedStyleDWORD SetExtendedStyle(DWORD dwNewStyle)返回值:返回列表视图控件使用的以前扩展风格的组合。参数: dwNewStyle 列表视图控件使用的扩展风格的组合。若希望进
阅读全文
摘要:第二步创建第一行1、在上一节中我们创建了一个列,那我们可以按照同样的方法多创建几个列。在 m_ListCtrl.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 90); 代码后边添入下列三行代码: m_ListCtrl.InsertColumn(1,_T("性别"),LVCFMT_LEFT,40); m_ListCtrl.InsertColumn(2,_T("联系方式"),LVCFMT_LEFT,160);m_ListCtrl.InsertColumn(3,_T("备注"),LVCFM
阅读全文
摘要:第一步:创建一个列注:开发平台为VS2008.NET。1、创建一个MFC应用程序,选择基于对话框的。具体步骤如下:文件à新建à项目àVisual C++àMFCàMFC应用程序,在下方名称中输入你自己想要建立的项目名,此处为ListCtrl。在MFC应用程序向导中选择引用程序类型,然后在窗口右边应用程序类型中选择基于对话框,然后选择完成。2、进入项目,可以直接看到建立好的一个对话框,将对话框中部的“TODO:在此放置对话框删除”。3、从工具箱中拖一个List Contrrol到对话框上,调节大小到自己满意的状态。4、将控件(一般ID为IDC_L
阅读全文
摘要:关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用。//形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一个指针变量pFun。首先我们根据前面提到的“形式1”认识到它是一个指向某种函数的指针,这种函数参数是一个int型,返回值是char类型。只有第一句我们还无法使用这个指针,因为我们还未对它进行赋值。 第二行定义了一个函数glFun()。该函数正好是一个以int为参数返回...
阅读全文
摘要:在大学大一的时候学的是C,然后后来大二的时候专业又开了C++这个课程,然后再后来自己又自学了一点VC++,大三的时候也试着编写过一个MFC的最简单的窗口程序。到大四的时候,自己又做了一个GIS的项目,是用C#.NET来编写的,然后发现C#上手好容易,而且还大部分语法规则都沿用了C,C++的习惯,于是觉得C++实在是没有一点优势可言啊。但这个暑假的实习经历又改变了我的观点:C++在写窗口程序虽然麻烦,但是却什么能做,而且对比C#来说,对运行环境的要求不高,不用像C#程序在安装之前还要安装100M多的运行.NET环境。C++和C#各有优缺,目前我对它们俩的定位是:C++用来写一些底层的程序,比如驱
阅读全文