随笔分类 - C/C++
摘要:RegisterWindowMessage函数定义了一个新的窗口消息,该消息在系统范围内是唯一的。通常调用SendMessage或者PostMessage函数时可以使用该函数返回的消息值。函数原型: UINT RegisterWindowMessage( lpString);参数说明: lpString指向一个以NULL结束的字符串,指定待注册的消息。返回值: 若成功注册了消息,返回值是一个消息标识符,该标识符范围在0XC000到0XFFFF之间。否则,返回值为0。PS: RegisterWindowMessage函数通常用于为两个合作应用程序之间的通信注册消息。 若两个不同的应用程...
阅读全文
摘要:OSVERSIONINFOEX structure收藏:Contains operating system version information. The information includes major and minor version numbers, a build number, a platform identifier, and information about product suites and the latest Service Pack installed on the system. This structure is used with theGetVers
阅读全文
摘要:1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。 your source files --> [autoscan*] --> [configure.scan] --> configure.ac 2.aclocal (automake):根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。 aclocal是一个perl 脚本程序,它的定义是:“ac
阅读全文
摘要:工欲善其事,必先利其器;要想用VC开发出高效率程序,必须对VC编译器有充分的了解。如果我们已经习惯编译器给我的默认设置,那么现在起开始尝试改变吧!本篇文章(或者后续文章)讲解VC编译器设置选项并没有先后顺序,只是作者在具体开发过程碰见了不同的编译设置,进行深入了解,做此文章记录。也希望读到这篇文章的您有所收获;本文章主要参考MSDN,编译器为VC7.1,作者只是添加一些通俗例子,或者翻译部分英文内容,从而达到对编译器设置的通俗理解。1:/GR(启用运行时类型信息)说明:此选项 (/GR) 添加代码以便在运行时检查对象类型。当指定此选项时,编译器定义 _CPPRTTI 预处理器宏。默认情况下,此
阅读全文
摘要:1) 有时候,你可能在编译的时候,计算机突然非法关机了(可能某人不小心碰了电源或你的内存不稳定等原因)。当你重启机器后打开刚才的项目,重新进行编译,发现VC会崩掉。你或许以为你的VC编译器坏了,其实不然(你试试编译其它项目,还是好的!),你只要将项目的.ncb、.opt、.aps、.clw文件以及Debug、Release目录下的所有文件都删掉,然后重新编译就行 了。 2) 如果你想与别人共享你的源代码项目,但是把整个项目做拷贝又太大。你完全可以删掉以下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目录下的所有文件。 3) 当你的...
阅读全文
摘要:SDK 就是Software Development Kit 软件开发包MFC 就是Microsoft Foundation Classes 微软函数类库MFC是对API函数的封装,也算是vc里的SDK用VC编写Windows程序有两种:1. Windwos c方式(SDK),2.C++方式:即对SDK函数进行包装,如VC的MFC,BCB的OWL等。SDK编程就是直接调用Windows的API进行编程,平时人们常说"用SDK写程序"就是指用Windows的API函数来写程序,API由上千个API函数组成(Win95的API有两千多个)。而MFC是API的封闭,结合面向对象程
阅读全文
摘要:dynamic_cast: 通常在基类和派生类之间转换时使用const_cast: 主要针对const和volatile的转换static_cast: 一般的转换(norun-timecheck)通常,如果你不知道该用哪个,就用这个。 reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。1)static_cast<T*>(a)编译器在编译期处理将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。表达式static_cast<T*>(a), a的值转换为模板中指定的类型T。在运行时转换过程中,不进行类型检查来
阅读全文
摘要:Visual C++作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。在使用Visual C++开发应用程序的过程中,系统为我们生成了大量的各种类型的文件,在本节中将要详细介绍Visual C++中这些不同类型的文件分别起到什么样的作用,在此基础上对Visual C++如何管理应用程序所用到的各种文件有一个全面的认识。*.dsw 为工作空间文件(Workspace)。*.dsp 为项目文件(Project)。一个工作空间文件中可以包含多个项目文件。*.cls 存放应用程序类和资源信息,这些信息是VC中的ClassWizard工具管理和使用类的信息来
阅读全文
摘要:1、 整型 Long long long int short 整数范围(十进制) 16位机64 32 16 16 -32768~32767 32位机64 32 32 16-2147483648~2147483646 64位机6432 32 16 -9223372036854775808~.. 其他:unsigned long long unsigned long unsigned unsigned short2、 输出(1) 整型%d :int型 %u 无符号int %ld long型 %lu 无符号long %hd short型 %lld long long型(某些编译器不支持)(2)数制输
阅读全文
摘要:一、什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为 32位...
阅读全文
摘要:一、struct的巨大作用面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。 经验不足的开发人员往往将所有需要传送的内容依顺序保存在char型数组中,.
阅读全文
摘要:1.预编译指令01) # 空指令,无任何效果02) #include 包含一个源代码文件03) #define 定义宏 04) #undef 取消已定义的宏05) #if 如果给定条件为真,则编译下面代码 06) #else 作为其他预处理的剩余选项进行编译07) #ifdef 如果宏已经定义,则编译下面代码08) #ifndef 如果宏没有定义,则编译下面代码09) #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码10) #endif 结束一个#if……#else条件编译块 11) #line 改变当前的行数和文件名称 12) #pragma 为编译程序提供非常规..
阅读全文
摘要:转载:C语言中的字符串C语言中提供了两种字符类型char和wchar_t,C语言使用字符数组来表示字符串,同时支持两种直接量写法:"abcd"和 L"abcd" 来表示字符串常量文字量,C语言允许用字符串常量来初始化字符串。标准C函数库提供了printf和wprintf两个版本的输出函数。C代码 #include<stdio.h> intmain(){ charstr[]="abcd"; wchar_twstr[]=L"abcd数学"; printf("%s\n",str); wpr
阅读全文
摘要:UpdateData,顾名思义,是用来刷新数据的。UpdateData(TRUE) -- 刷新控件的值到对应的变量UpdateData(FALSE) -- 拷贝变量值到控件显示。例如窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE);简单的说,如果Updatedata(TRUE) == 将控件的值赋
阅读全文
摘要:指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。魔幻数组名请看程序(本文程序在WIN32平台下编译):Cpp代码 #include<iostream.h> intmain(intargc,char*argv[]) { charstr[10]; char*pStr=str; cout<<sizeof(str)<<endl; cout<<sizeof(pStr)<<endl; return0; }#include <iostream.h>int
阅读全文
摘要:方便用的时候查询收藏起来:GetDeviceCaps是VB程序中的一个函数,这个函数可以访问使用设备描述表的设备数据,应用程序指定相应设备描述表的句柄和说明该函数访问数据类型的索引来访问这些数据。根据指定设备场景代表的设备的功能返回信息 参数类型及说明hdcLong,要查询其设备的信息的设备场景nIndexLong,根据GetDeviceCaps索引表所示常数确定返回信息的类型编辑本段C++参数 1、hdc:设备上下文环境的句柄。 2、nIndex:指定返回项,该参数取下列一值。(C++) DRIVERVERSION:设备驱动程序版本。 TECHNOLOGY:设备技术,它可以是下列一...
阅读全文
摘要:作用:读取DC的一些打印区域信息,主要是像素和英寸方面的数据.声明:GetDeviceCaps(int )使用例子://所有像素数int pagecx=dc.GetDeviceCaps(HORZRES);int pagecy=dc.GetDeviceCaps(VERTRES);//即每英寸点数short cxInch = dc.GetDeviceCaps(LOGPIXELSX);short cyInch = dc.GetDeviceCaps(LOGPIXELSY);// 计算一个设备单位等于多少0.1mmdouble scaleX = 254.0 / (double)GetDeviceCaps
阅读全文
摘要:请牢记以下3条原则:(在没有#pragma pack宏的情况下)1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)3:收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部
阅读全文
摘要:位图BITMAPINFOHEADER 与BITMAPFILEHEADER:先来看BITMAPINFOHEADER,只写几个主要的biSize包含的是这个结构体的大小(包括颜色表)biWidth和biHeight分别是图片的长宽biPlanes是目标绘图设备包含的层数,必须设置为1biBitCount是图像的位数,例如24位,8位等biXPelsPerMeter, biYPelsPerMeter 是现实世界中每米包含的像素数 设为3780即可biSizeImage 图像数据的大小 = biWidth X biHeight X biBitCount-------------------------
阅读全文
摘要:TrackMouseEvent函数TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。其函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);参数lpEventTrack是一个指向TRACKMOUSEEVENT结构体的指针。函数执行成功的话返回非零值(true),否则返回零(false)。该函数可以发送的消息包括:WM_MOUSEHOVER鼠标在窗口的某一客户区上停留上一次调用TrackMouseEvent函数时所设定的时间长度时发送。在该消息产生之后将停止跟踪,如果需要进一步跟踪鼠
阅读全文

浙公网安备 33010602011771号