![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 76
天桥雨
这个作者很懒,什么都没留下…
展开
-
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 · 233 阅读 · 0 评论 -
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 · 403 阅读 · 0 评论 -
一些编程基础的注意(持续更新)
形参如果是字符或整型数组的数组名,用for循环赋值或strcpy赋值函数结束后可以保留这些值,而形参如果是指针的话,不能用strcpy赋值,而是直接等于,函数结束后不可以保留赋的值。 >>的时候如果超过最低位了,则超过的部分自动消失,无需先&再>>。如11110101,如果需要取高四位放在低四位上,不需要(11110101 & 11110000)>>4,直接11110101>>4即可,原创 2016-12-05 19:05:15 · 286 阅读 · 0 评论 -
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 · 34545 阅读 · 2 评论 -
MFC自绘按钮的实现(不断更新)
一.自绘按钮的实现过程申明自绘属性进行VM_MESUREITEM事件响应,说明按钮的尺寸进行VM_DRAWITEM消息的重新响应,说明如何绘制按钮首先在vc6中新建工程,选择MFC并且新建dialog工程输入工程名,然后将生成的按钮等删除,重新添加两个按钮。为按钮设置属性选择自绘,就是自己向上贴图在dlg类的对象上添加WM_DRAWITEM属性在生成转载 2017-01-09 19:59:36 · 6016 阅读 · 0 评论 -
MFC非客户区自绘标题栏的实现(不断更新)
某些情况下需要在对话框标题栏上添加按钮,在此mark下:环境:win7 + vs2008 + sp1 项目:MFC对话框步骤: 1. 重写方法:DefWindowProc 1.1 .h文件添加代码如下: a. virtual void DoDataExchange(CDataExchange* pDX);转载 2017-01-09 20:05:08 · 6265 阅读 · 3 评论 -
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 · 2207 阅读 · 0 评论 -
MFC定时器的用法
Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 Settimer是设置,Ontimer是响应Settimer消息的。SetTimer函数的用法1 )用WM_TIMER来设置定时器先请看SetTimer这个API函数的原型UINT_PTR SetTimer(转载 2017-01-10 13:59:16 · 516 阅读 · 0 评论 -
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 · 6799 阅读 · 0 评论 -
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 · 677 阅读 · 0 评论 -
MFC中窗口重绘
在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和 WM_NCPAINT(通知非客户区有变化)WM_NVPAINT系统会自己搞定WM_PAINT消息对应转载 2017-01-17 18:29:55 · 984 阅读 · 0 评论 -
MFC六大核心机制
我们选择了C++,主要是因为它够艺术、够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为必然。 首先,列出要讲的MFC六大核心机制: 1、MFC程序的初始化。 2、运行时类型识别(RTTI)。 3、动态创建。 4、永久保存。转载 2017-01-17 18:53:56 · 1134 阅读 · 0 评论 -
MFC常见面试问题(持续更新)
1)说说mfc中的类继承图的基本框架,2)说说CView类的子类都有什么。视图类(CView)的三个子类 CScrollView类提供视图的滚动显示;CEditView类支持在视图中的文本编辑操作;CHtmlView类支持在视图中显示和操作html文件。3)DLL的三种调用形式。DLL的概念可以向程序提供一些函数、变量或 类 。静态链接库转载 2017-01-16 18:46:05 · 17135 阅读 · 0 评论 -
关键字static/const的作用
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函转载 2016-12-15 13:08:27 · 268 阅读 · 0 评论 -
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 · 592 阅读 · 0 评论 -
const修饰函数的作用
1.声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object)。 为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义的时候都应该放const关键字。任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其转载 2016-09-13 18:36:30 · 5233 阅读 · 0 评论 -
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 · 227 阅读 · 0 评论 -
调试技巧之调用堆栈 - Call stack
简单介绍 调试是程序开发者必备技巧。如果不会调试,自己写的程序一旦出问题,往往无从下手。本人总结10年使用VC经验,对调试技巧做一个粗浅的介绍。希望对大家有所帮助。 今天简单的介绍介绍调用堆栈。调用堆栈在我的专栏的文章VC调试入门提了一下,但是没有详细介绍。 首先介绍一下什么叫调用堆栈:假设我们有几个函数,分别是function1,function2,functi转载 2016-11-07 19:53:08 · 1446 阅读 · 0 评论 -
static静态变量生命周期
static生命周期2011-07-15 16:01静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而转载 2016-11-17 20:23:48 · 506 阅读 · 0 评论 -
内存中常见异常值的解释(比如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 · 395 阅读 · 0 评论 -
VS2012 CString转char*时,每个字符后面都会多出一个\0的解决办法
CString转字符数组时,数组中每个字符后面都会多出一个\0 的原因: 是Unicode字符集的问题。选择项目->项目属 性(或直接按alt+F7)->配置属性,在右边找到“字符集”,将“使用Unicode字符集”改为“使用多字节字符集”。保存之后需要重新生成 解决方案,然后通过网上介绍的多种方法从CString转字符数组每个字符后面再也不会多出\0字符了。 实际应用转载 2016-10-28 18:17:20 · 2345 阅读 · 0 评论 -
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 · 558 阅读 · 0 评论 -
LeaveCriticalSection问题的解决方案
1、问题描述在VS2010执行过程之中,程序崩溃,出现了以下问题,导致程序中断。如图1所示程序报错如下所示:[cpp] view plain copy *******************************************************************************/ void __cdecl _转载 2016-11-25 19:25:45 · 2051 阅读 · 0 评论 -
MFC中theApp的用法
MFC应用程序中,无论是基于单文档还是对话框的应用程序,在应用程序类中,都有theApp这个变量,eg:CADOApp theApp;theApp代表应用程序实例~~如果我们在应用程序类再定义了一个变量,例如 _ConnectionPtr m_pConnection; 当我们在其他类,比如Dlg类中,想用到m_pConnection这个变量时,可以借助theApp来调用,例转载 2016-12-09 13:43:32 · 4773 阅读 · 0 评论 -
混合编译:c++文件调用c文件变量和函数、c文件调用c++文件变量和函数
1.c++文件调用c文件变量和函数前言:以前见到extern "C"这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。首先,为什么要使用extern "C"修饰符?C++调用其它语言的函数,由于编译器生成函数的机制不一样,所以需要经过特殊处理,才可以调用。调用C语言的函数,需要在函数声明的地方语句extern "C"。如果不使用该语句,在链接的时候,编译器就会报以下这转载 2016-12-02 19:13:37 · 840 阅读 · 0 评论 -
混合编译:VS预编译头文件设置和屏蔽编译警告的操作
1.预编译头文件设置头文件预编译,是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后工程编译的时候就不再编译预先编译过的这些头文件,仅仅使用结果,预编译可以节省编译时间。预编译头文件是通过编译stdafx.cpp自动生成,以工程名命名,使用预编译头文件的文件第一个包含的都是stdafx.h。有时候,当一个项目中需要同时用到原创 2016-12-09 15:16:20 · 2655 阅读 · 0 评论 -
混合编译:在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 · 517 阅读 · 0 评论 -
关于fputc、fgetc、printf、sprintf、sprintf_s以及fprintf
1.printfprintf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf("", )。格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还原创 2016-12-09 17:44:55 · 2167 阅读 · 0 评论 -
各种数据类型的取值范围
速查表: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 · 1010 阅读 · 0 评论