- 博客(53)
- 资源 (2)
- 收藏
- 关注
转载 浅谈C++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定
2013-05-28 22:56:27 629
原创 c笔试题
1.判断链表是否存在环问题:判断一个链表是否存在环,例如下面这个链表就存在一个环:例如N1->N2->N3->N4->N5->N2就是一个有环的链表,环的开始结点是N5这里有一个比较简单的解法。设置两个指针p1,p2。每次循环p1向前走一步,p2向前走两步。直到p2碰到NULL指针或者两个指针相等结束循环。如果两个指针相等则说明存在环。struct link { in
2008-07-07 11:25:00 946 1
原创 笔试题
1.判断两个数组中是否存在相同的数字给定两个排好序的数组,怎样高效得判断这两个数组中存在相同的数字?这个问题首先想到的是一个O(nlogn)的算法。就是任意挑选一个数组,遍历这个数组的所有元素,遍历过程中,在另一个数组中对第一个数组中的每个元素进行binary search。用C++实现代码如下:bool findcommon(int a[],int size1,int b
2008-07-07 11:19:00 569
原创 最大子序列
问题:给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大例如:整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为21。对于这个问题,最简单也是最容易想到的那就是穷举所有子序列的方法。利用三重循环,依次求出所有子序列的和然后取最大的那个。当然算法复杂度会达到O(
2008-07-07 11:13:00 766
原创 怎么遍历MFC打开的多个文档?
怎么遍历MFC打开的多个文档? 需要使用打开的多个文档的数据,在哪可以遍历到呢?处理的例程应该放在哪呢?App?Frame?Doc?View...? 嗯,我再想想 在class CMultiDocTem
2008-05-01 10:47:00 1445
转载 如何让一个打开的文档成为活动文档
如何让一个打开的文档成为活动文档 有一个树型控件,在其TVITEM的用户部分存储着一个文档指针。当双击项目时,我想从打开的文档列表中激活文档。所以对于给定的文档 类(CDocument)指针,如何在MDI应用中激活这个指针? 在回答这个问题之前需要纠正的是:文档是不能被激活的,只有
2008-05-01 10:45:00 758
原创 vc美化界面(2)
3.3.3 WM_CTLCOLOR 在控件显示之前,每一个控件都会向父对话框发送一个WM_CTLCOLOR消息要求获取绘制所需要的颜色。WM_CTLCOLOR消息缺省处理函数CWnd::OnCtlColor返回一个HBRUSH类型的句柄,这样,就可以设置前景和背景文本颜色,并为控件或者对话框的非文本区域选定一个刷子。WM_CTLCOLOR的映射函数原型如下:afx_msg HBR
2008-04-16 17:30:00 1288
原创 ondraw
OnDraw与OnPaint有什么区别?(转)2007-11-15 17:30 学习中遇到一个问题,OnDraw与OnPaint有什么区别?上网搜索了一下,又查了一下MSDN和MFC的一些源文件,现整理如下。
2008-04-16 13:44:00 1083
原创 ClistCtrl
创建图形列表并和CListCtrl关联:m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192));m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) );m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL);为报表添加4列:
2008-04-16 09:56:00 2917 1
原创 peekmessage getmessage
GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax,UINT wRemoveMsg) 参数wRemoveMsg的作用是指
2008-04-04 15:09:00 777
原创 绘制灰度图像
有时一幅灰度位图比一幅彩色位图更能吸引人,如在一些游戏中对往事的回忆常把场景设置成灰色,是不是有一种往事的感觉 绘制灰度图像 有时一幅灰度位图比一幅彩色位图更能吸引人,如在一些游戏中对往事的回忆常把场景设
2008-03-31 15:38:00 1515
原创 memcpy memmove
我看了下crt的实现源码,如下:(略去64位机的) C/C++ code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->void * __cdecl memcpy ( void * dst,
2008-03-28 11:10:00 645
原创 VC常见的108个问题
(1) 如何通过代码获得应用程序主窗口的 指针?主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example:TC
2008-03-27 16:30:00 1394
原创 windows消息大全
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含
2008-03-27 16:28:00 587
原创 VC中动态生成控件
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不需要调用Cr
2008-03-27 16:27:00 844
原创 C语言面试题
雅虎笔试题(字符串操作) 给定字符串A和B,输出A和B中的最大公共子串。比如A="aocdfe" B="pmcdfa" 则输出"cdf"*///Author: azhen#i nclude#i nclude#i ncludechar *commanstring(char shortstring[], char longstring[]){int i, j;char *substrin
2008-03-27 13:28:00 674
原创 树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW
树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW2008-03-20 21:17 TVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息
2008-03-25 16:49:00 1296
原创 基于VC++的GDI常用坐标系统及应用
在Windows应用程序中,只要进行绘图,就要使用GDI坐标系统。Windows提供了几种映射方式,每一种映射都对应着一种坐标系。例如,绘制图形时,必须给出图形各个点在客户区的位置,其位置用x 和y两个坐标表示,x 表示横坐标,y表示纵坐标。在所有的GDI绘制函数中,这些坐标使用的是一种“逻辑单位”。当GDI函数将结果输出送到某个物理设备上时,Windows将逻辑坐标转换成设备坐标(如屏幕或打印机
2008-03-25 15:00:00 1221 3
原创 在MFC类中各种类的指针的获取和应用
关于MFC下的文档和视图以及框架之间的访问, 这些问题已经是老生常谈了,但我觉得还是都没有详细的说明,特别是对于英语较差的人,我查看了一些blog,总结了一下!希望对和我一样的人有点帮助! 一: 1: 因为对于SDI程序,主框架窗口就是文档框窗(如果这个也不知道,就要查看一下MFC下的单文档的构成原理了). 下面所说的是关于单文档的.
2007-12-06 15:14:00 1194
原创 动态链接库的开发 DLL
vs2005 vc工程如何包含.lib库文件? 先在“工具->选项->项目和解决方案->VC++目录”里设置库文件的路径;然后将需要的lib文件的名称加入“项目-〉属性-〉配 置属性-〉连接器-〉输入-〉附属依赖项”,文件名称之间用空格间隔,如:nfxmgr.lib adimgr.lib cta.
2007-11-29 13:44:00 1122
原创 Subersion和TortoiseSVN的简单使用
请求(这是默认情况下,如果你有其他程序占用了3690端口,可以用“--listen-port”参数指定服务器监听端口)。服务器的具体启动方式是:在subversion安装目录下的/bin子目录下有一个svnserve.exe文件,该文件运行时可带参数,常用的参数有两个一个是“-d”,该参数表明服务器作为一个精灵进程一直运行,直到手动结束该程序。另一个参数就是“-r”,该参数指定服务器进程寻找Rep
2007-11-08 12:50:00 656
原创 vc调用dll
动态链接库DLL的链接 应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接。在使用DLL之前首先要知道DLL中函数的结构信息。Visual C++6.0在VC/bin目录下提供了一个名为Dumpbin.exe的小程序,用它可以查看DLL文件中的函数结构。另外,Windows系统将遵循下面的搜索顺序来定位DLL: 1.包含EXE文件的目录,2.进程的当前工作目录, 3.Windo
2007-11-08 09:52:00 3053
原创 extern "c"
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplu* **tern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入
2007-11-07 16:40:00 519
原创 vc 小技巧
. 内存分配问题 1. 变量未初始化。 为debug中会自动给变量初始化found=FALSE,而在release版中 则不会。所以尽可能的给变量、类或结构初始化。 2. 数据溢出的问题 如:char buffer[10]; int counter; lstrcpy(buffer, "abcdefghik"); 在debug版中buffer的NULL覆盖了counter的高位,但是除非counte
2007-11-07 12:35:00 1166
原创 函数指针及extern "c"
C/C 中函数指针的含义分类:学习函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test()为例: int (*fp)(int a);//这里就定义了一个指向函数
2007-11-07 11:28:00 3037
原创 多线程
11月25日对几本VC教材的看法《程序设计经验杂谈》-零点代码(网络) 网络上的,里面一行代码也没有,写的都是程序员辛酸,如果你学习VC目的是当一名程序员,每闲下来看几个小段子感觉不错============《高质量C++/C编程指南》(网络)网络上流传已久的,也是每个想当程序员的人必看的,看的越早越好,刚开始可以尝试做到一些起码规范,慢慢来,不要太急============
2007-11-05 13:57:00 2059
原创 VC多线程编程(转)
VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好. 一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThread
2007-11-05 12:14:00 837
原创 SendMessage,PostMessage
首先讲这两个函数的区别。SendMessage是阻塞的。PostMessage不是的。SendMessage会等发去的消息被处理了才返回。PostMessage则只负责把消息放到相应的消息队列中就返回了,它不必等待消息的处理。在使用上有一个要注意的地方。在MFC中每个从CWnd继承来的类,都有两个成员函数SendMessage,PostMessage。在Windows SDK中也有两个函数Send
2007-11-02 10:04:00 1110 1
原创 VS一些快捷键
Ctrl+l:删除当前行;Ctrl+Enter:插入当前行: shift+F7查看到设计器; F7到代码: 开始运行,不调试:Ctrl+F5 重新生成解决方案:Ctrl+Shift+B 增加一个新项:Ctrl+Shift+A 到html设计器:Ctrl+PageDown F5:Debug运行: Ctrl+J:查看成员代码; Ctrl+Shift+Bre
2007-11-01 08:57:00 617
原创 用CfileFind递归搜索目录
我们知道CfileFind未提供直接遍历其子目录的功能,而有时候我们却常常要遍历某一目录下的所有文件及其子目录。如我们要删除一个目录,而这个目录下又有子目录,因为Windows不允许删除非空的目录,因此我们必须能够遍历一个目录下的所有子目录,这可以通过简单的递归实现. 下面让我们从一个简单的例子开始:如何删除某一目录?(假设我们通过DeleteDirectory(LPCTSTR DirName
2007-10-26 09:16:00 774
原创 图像缩放
第一篇文章.插值算法对于缩放比例较小的情况是完全可以接受的,令人信服的。一般的,缩小0.5倍以上或放大3.0倍以下,对任何图像都是可以接受的。最邻近插值(近邻取样法): 最临近插值的的思想很简单。对于通过反向变换得到的的一个浮点坐标,对其进行简单的取整,得到一个整数型坐标,这个整数型坐标对应的像素值就是目的像素的像素值,也就是说,取浮点坐标最邻近的左上角点(对于DIB是右上角,因为
2007-10-17 14:50:00 3338
原创 Cview,Frame,Doc,APP等的调用顺序
下面是打开后什么也不做,关闭的CWinApp::CWinApp() CWinApp::InitApplication() CWinApp::InitInstance() CDocument::CDocument() CFrameWnd::CFrameWnd() CFrameWnd::LoadFrame(nIDResource, dwDefaultSt
2007-10-10 09:58:00 1867 1
原创 C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do something in c
2007-10-08 16:47:00 502
原创 调试
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建
2007-09-28 15:41:00 1245 1
原创 typedef用法注意事项
#include int main(void) { int i = 20; typedef int *myint; const myint mintval = &i; cout return 0; }//运行结果显示为 2
2007-09-28 15:33:00 716
原创 GetBuffer and ReleaseBuffer体会
CString s( "abcd" );#ifdef _DEBUGafxDump #endifLPTSTR p = s.GetBuffer( 100); //means 开辟的buffer的size.strcat( p, "Hello" ); // directly access CString buffers.ReleaseBuffer(-1); //改变了字符串内容,务必
2007-09-28 13:31:00 587
原创 内存句柄与指针的区别
问题: 请专家详细介绍一下内存句柄与指针的区别。 指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构,因为这样太不安全。所以Windows给每个使用GlobalAlloc等函数声明的内存区域指定一个句柄(本质上仍是一个指针,但不要直接操作它),平时你只是在调用API函数时利用这个句柄来说明要操作哪段内存。当你需
2007-09-27 13:35:00 665
原创 windows 内存分配杂谈
1.GlobalAlloc是win16留下来的函数,它调用HeapAlloc分配堆中的内存。在理想的win32环境下,我们不需要GlobalAlloc,但是实际上,我们还得保留从win16移植过来的许多代码。在这些代码中使用了“内存句柄”(HGLOBAL)参数而不是32位的内存地址。 GlobalAlloc根据其属性参数做两件不同的事情。如果参数指定了GMEM_FIXE
2007-09-27 13:20:00 764
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人