自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

转载 各种数据类型的取值范围

速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)unsigned int 0 ~ 4294967295 (4 Bytes)long == intlong

2017-02-08 19:40:06 987

转载 MFC六大核心机制

我们选择了C++,主要是因为它够艺术、够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为必然。       首先,列出要讲的MFC六大核心机制:       1、MFC程序的初始化。       2、运行时类型识别(RTTI)。       3、动态创建。       4、永久保存。  

2017-01-17 18:53:56 1106

转载 MFC中窗口重绘

在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和 WM_NCPAINT(通知非客户区有变化)WM_NVPAINT系统会自己搞定WM_PAINT消息对应

2017-01-17 18:29:55 964

转载 MFC常见面试问题(持续更新)

1)说说mfc中的类继承图的基本框架,2)说说CView类的子类都有什么。视图类(CView)的三个子类 CScrollView类提供视图的滚动显示;CEditView类支持在视图中的文本编辑操作;CHtmlView类支持在视图中显示和操作html文件。3)DLL的三种调用形式。DLL的概念可以向程序提供一些函数、变量或 类 。静态链接库

2017-01-16 18:46:05 16731

转载 C语言知识点学习之结构体成员变量后加冒号

typedef struct xx {        unsigned int a:2;      unsigned int b:3;}Xx;//“unsigned int a:2;“中后面的":2"表示成员a只占俩个位,而不是我们传统认为的占//4个字节这样整个结构体大小就为4个字节而不是8个字节,这样就可以达到节省内存//的目的,缓解芯片资源紧张(这里以32位编译器

2017-01-12 16:22:17 667

转载 C++中Cbitmap,HBitmap,Bitmap的区别及联系

加载一位图,可以使用LoadImage:HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad);LoadImage可以用来加载位图,图标和光标加载时可以规定加载图的映射到内存的大小:    cxDesired:指定图标或光标的宽度,以像

2017-01-10 15:53:01 6736

转载 MFC定时器的用法

Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 Settimer是设置,Ontimer是响应Settimer消息的。SetTimer函数的用法1 )用WM_TIMER来设置定时器先请看SetTimer这个API函数的原型UINT_PTR SetTimer(             

2017-01-10 13:59:16 473

转载 MFC跑马灯的效果(持续更新)

dlg头文件中变量定义:CString m_string;RECT m_rect;RECT rect_static;SIZE size;对话框初始化:// TODO: Add extra initialization herem_string = "ABCDEFGHIJK MFC 中 在一个对话框中 实现跑马灯";SetTimer(1, 200, NULL);

2017-01-09 20:27:30 2169

转载 MFC非客户区自绘标题栏的实现(不断更新)

某些情况下需要在对话框标题栏上添加按钮,在此mark下:环境:win7 + vs2008 + sp1 项目:MFC对话框步骤:    1.  重写方法:DefWindowProc            1.1 .h文件添加代码如下:               a.  virtual void DoDataExchange(CDataExchange* pDX);  

2017-01-09 20:05:08 6132 3

转载 MFC自绘按钮的实现(不断更新)

一.自绘按钮的实现过程申明自绘属性进行VM_MESUREITEM事件响应,说明按钮的尺寸进行VM_DRAWITEM消息的重新响应,说明如何绘制按钮首先在vc6中新建工程,选择MFC并且新建dialog工程输入工程名,然后将生成的按钮等删除,重新添加两个按钮。为按钮设置属性选择自绘,就是自己向上贴图在dlg类的对象上添加WM_DRAWITEM属性在生成

2017-01-09 19:59:36 5976

原创 MFC中改变按钮颜色的方法

1.使用CMFCButton类MFC自带的MFC Button Control控件等按钮可以修改颜色,还能添加图片,设置字体颜色等。这些控件就在工具箱的下面,前面带MFC开头的那些。在需要改颜色的地方调用m_btn.SetFaceColor(RGB(0, 255, 0));即可。CMFCButton中的SetFaceColor()可能会显示不出颜色,需要设置m_button

2017-01-06 20:58:38 33889 2

原创 opencv的几个基础函数

#include #include "Barcode2D/MaxiCode.h"static int opencv_entry( int argc, char** argv );using namespace Barcode2D;int main(int argc,char *argv[]){    return opencv_entry(0, NULL);}

2016-12-15 14:38:46 388

转载 关键字static/const的作用

这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函

2016-12-15 13:08:27 260

转载 main函数的两个参数

C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main(argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:main (argc,argv)int argv;char *argv[];或写成:main

2016-12-15 11:26:58 573

原创 关于fputc、fgetc、printf、sprintf、sprintf_s以及fprintf

1.printfprintf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf("", )。格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还

2016-12-09 17:44:55 2121

原创 混合编译:在c中使用c++中的类对象和类成员函数

C中没有类和对象的概念,所以不识别C++的类对象和成员函数,  而如果要在c中使用c++的对象和成员函数应该怎么办呢?我们可以自己写一个c++普通函数封装,然后在c文件中用void*来调用该c++类对象,用封装函数来调用该普通函数,具体如下:PackBuilderApi.h//c和c++文件共用#ifndef _PACK_BUILDER_API_H#define _PACK_B

2016-12-09 16:38:42 498

原创 混合编译:VS预编译头文件设置和屏蔽编译警告的操作

1.预编译头文件设置头文件预编译,是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后工程编译的时候就不再编译预先编译过的这些头文件,仅仅使用结果,预编译可以节省编译时间。预编译头文件是通过编译stdafx.cpp自动生成,以工程名命名,使用预编译头文件的文件第一个包含的都是stdafx.h。有时候,当一个项目中需要同时用到

2016-12-09 15:16:20 2627

转载 MFC中theApp的用法

MFC应用程序中,无论是基于单文档还是对话框的应用程序,在应用程序类中,都有theApp这个变量,eg:CADOApp theApp;theApp代表应用程序实例~~如果我们在应用程序类再定义了一个变量,例如 _ConnectionPtr m_pConnection; 当我们在其他类,比如Dlg类中,想用到m_pConnection这个变量时,可以借助theApp来调用,例

2016-12-09 13:43:32 4732

转载 delete一个指针之后,要记得设置为NULL

本文转载自易醉《delete一个指针之后,要记得设置为NULL》众所周知,最开始我们用new来创建一个指针,那么等我们用完它之后,一定要用delete将该指针删掉。但是,值得注意的是,难道就仅仅是删除这个指针这么简单的么?下面,我们用一个程序来说明这个问题:?1234567891011121314

2016-12-09 11:33:51 380 1

转载 C++模板(template)使用介绍

1.模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.float m

2016-12-07 17:31:10 541

转载 free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因

报错的位置void __cdecl _free_base (void * pBlock){ int retval = 0; if (pBlock == NULL) return; RTCCALLBACK(_RTC_Free_hook, (pBlock, 0)); retval = Hea

2016-12-05 19:08:37 2892

原创 一些编程基础的注意(持续更新)

形参如果是字符或整型数组的数组名,用for循环赋值或strcpy赋值函数结束后可以保留这些值,而形参如果是指针的话,不能用strcpy赋值,而是直接等于,函数结束后不可以保留赋的值。 >>的时候如果超过最低位了,则超过的部分自动消失,无需先&再>>。如11110101,如果需要取高四位放在低四位上,不需要(11110101 & 11110000)>>4,直接11110101>>4即可,

2016-12-05 19:05:15 271

转载 关于函数返回值为指针类型的分析

先看一个例子,这是初学者经常遇到的问题char*GetString(void){ char p[]= "hello world"; return p; //编译器一般将提出警告信息}void main(void){ char *str = NULL; str = GetString();//str 的内容是垃圾,得不到

2016-12-05 18:58:36 18741 2

转载 混合编译:c++文件调用c文件变量和函数、c文件调用c++文件变量和函数

1.c++文件调用c文件变量和函数前言:以前见到extern "C"这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。首先,为什么要使用extern "C"修饰符?C++调用其它语言的函数,由于编译器生成函数的机制不一样,所以需要经过特殊处理,才可以调用。调用C语言的函数,需要在函数声明的地方语句extern "C"。如果不使用该语句,在链接的时候,编译器就会报以下这

2016-12-02 19:13:37 792

原创 知识补充:在本地和gitlab上创建新分支以及字符串strcpy和直接等于

1.在本地和gitlab上创建新分支git checkout -b fixspacequestion origin/mastergit add /.git commit -m 'fix space question'git push origin fixspacequestion2.字符串strcpy和直接等于strcpy为把一个字符串地址的内容赋值给另一个字符

2016-11-25 19:33:02 995

转载 LeaveCriticalSection问题的解决方案

1、问题描述在VS2010执行过程之中,程序崩溃,出现了以下问题,导致程序中断。如图1所示程序报错如下所示:[cpp] view plain copy *******************************************************************************/    void __cdecl _

2016-11-25 19:25:45 1987

转载 关于malloc(0)

问题:char* ptr = malloc(0*sizeof(char));if(NULL == ptr)      printf("got a NULL pointer");else     printf("got a Valid pointer");请问:上面的程序输出为什么?在C99的标准里面解释到,如果给malloc传递0参数,其返回值是依赖于编译器的实现,但是不管返回

2016-11-18 20:12:52 284

转载 打开和关闭文件以及读取和回退字符的操作

函数简介  函数功能: 打开一个文件   函数原型:FILE * fopen(const char * path,const char * mode);   相关函数:open,fclose,fopen_s[1] ,_wfopen   所需库: stdio.h>  返回值: 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在

2016-11-17 20:27:36 2550

转载 内存中常见异常值的解释(比如0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值 )

* 0xcccccccc : Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory* 0xcdcdcdcd : Used by Microsoft's C++ debugging runtime library to mark uninitialised heap memory

2016-11-17 20:25:14 376

转载 static静态变量生命周期

static生命周期2011-07-15 16:01静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而

2016-11-17 20:23:48 494

原创 动态链表的创建、节点内存空间申请以及释放

1.动态链表的创建和内存申请:typedef struct _STACK{    void* data;    int size;    struct _STACK* next;    struct _STACK* pre;} STACK;STACK *stack;STACK *_stack;void initStack(){stack = (S

2016-11-15 18:49:29 10480

转载 调试技巧之调用堆栈 - Call stack

简单介绍  调试是程序开发者必备技巧。如果不会调试,自己写的程序一旦出问题,往往无从下手。本人总结10年使用VC经验,对调试技巧做一个粗浅的介绍。希望对大家有所帮助。    今天简单的介绍介绍调用堆栈。调用堆栈在我的专栏的文章VC调试入门提了一下,但是没有详细介绍。    首先介绍一下什么叫调用堆栈:假设我们有几个函数,分别是function1,function2,functi

2016-11-07 19:53:08 1374

转载 在调试MFC程序中查看变量的方法(包含控制台)

在调试MFC程序时,我们经常需要查看特定位置变量的输出值。或者在某特定条件执行时,给出一个输出标识。一般来说,有3种方法:1)调用TRACE(LPCTSTR lpszFormat, ...)函数   在MFC中使用TRACE函数来打印输出结果却是非常方便,和在控制台程序中使用printf函数的使用方法和效果类似。不过有几点     需要注意:一,TRACE函数的输出

2016-11-07 19:49:08 7848

原创 关于动态数组

有时候我们数组的个数n不确定,需要先给n赋值,而建立数组变量的时候又不支持个数为变量(不支持a[n]),这个时候就可以通过动态数组来解决,方法如下:一维#include #include int main(){int n1,i;int *array;puts("输入一维长度:");scanf("%d",&n1);array=(int*)malloc(

2016-11-03 20:31:28 351

转载 VS2012 CString转char*时,每个字符后面都会多出一个\0的解决办法

CString转字符数组时,数组中每个字符后面都会多出一个\0 的原因: 是Unicode字符集的问题。选择项目->项目属 性(或直接按alt+F7)->配置属性,在右边找到“字符集”,将“使用Unicode字符集”改为“使用多字节字符集”。保存之后需要重新生成 解决方案,然后通过网上介绍的多种方法从CString转字符数组每个字符后面再也不会多出\0字符了。     实际应用

2016-10-28 18:17:20 2307

转载 C++ const用法 尽可能使用const

C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量  1 #include 2 using namespace std; 3 int main(){ 4 int a1=3; ///non-cons

2016-09-13 18:53:22 216

转载 const修饰函数的作用

1.声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object)。 为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义的时候都应该放const关键字。任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其

2016-09-13 18:36:30 5171

转载 apt-get, sudo以及git基础

apt-get:Advanced Package Tool,又名apt-get,是一款适用于Unix和Linux系统的应用程序管理器。最初于1998年发布,用于检索应用程序并将其加载到Debian Linux系统。Apt-get成名的原因之一在于其出色的解决软件依赖关系的能力。其通常使用.deb-formatted文件,但经过修改后可以使用apt-rpm处理红帽的Package Manager

2016-09-05 18:36:43 2737

转载 c语言基本出具类型的取值范围

1、C和C++语言中基本的数据类型有:字符型(char),整形(short, int, long), 浮点型(float, double)  类型字节数类型字节数char1short2int根据系统而定,可能是2或4long

2016-09-05 16:56:29 490

转载 C++中placement new操作符(经典)

placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw()  { return p; } 首先我们区分下几个容易混淆的关键词:new、

2016-09-01 18:54:04 211

PDLAnalysis.zip

PDLAnalysis.zip

2016-10-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除