
C/C++
文章平均质量分 57
teresa502
这个作者很懒,什么都没留下…
展开
-
VS2005 & VS2008快捷键大全
---------------------------------------VS2005快捷键大全----------------------------Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL转载 2010-01-12 14:55:00 · 425 阅读 · 0 评论 -
预处理指令
预处理指令是我们写在程序代码中的给预处理器(preprocessor)的 命令,而不是程序本身的语句。预处理器在我们编译一个C++程序时由编译器自动执行,它负责控制对程序代码的第一次验证和消化。所有这些指令必须写在单独的一行中,它们不需要加结尾的分号;。 #define在这个教程的开头我们已经提到了一种预处理指令: #define ,可以被用来生成宏定义常量(defined con原创 2009-12-24 00:05:00 · 1237 阅读 · 0 评论 -
宏定义
1.不带参数的宏定义: 宏定义又称为宏代换、宏替换,简称“宏”。格式:#define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”。预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。即在对相关命令或语句的含义和功能作具体分析之前就要换:例:#define PI 3.转载 2009-12-23 23:32:00 · 2171 阅读 · 1 评论 -
c++中冒号(:)和双冒号(::)的用法
1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{ unsigned char a:4; unsigned char c;} ; XXX(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。struct _XXX{转载 2010-01-04 15:43:00 · 514 阅读 · 1 评论 -
_stdcall 与_cdecl 的区别
_stdcall 与 _cdecl 的区别几乎我们写的每一个WINDOWS API函数都是__stdcall类型的,首先,需要了解两者之间的区别: WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除??如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带转载 2009-12-30 23:22:00 · 504 阅读 · 0 评论 -
typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句中的数字9 写成字母g 预处理也照样带入。2)typedef是在编译时处理的。它在自己的作用域内给一转载 2009-12-31 17:22:00 · 499 阅读 · 0 评论 -
VC常用数据类型的使用
关键字 VC常用数据类型的使用VC常用数据类型的使用刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="程佩君";char temp[200];char *buf;CSt转载 2010-01-04 21:19:00 · 452 阅读 · 0 评论 -
memset
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void memset(void *s, int i, unsigned n); 程序例: #include #include #include int main(void) {转载 2010-01-07 22:38:00 · 445 阅读 · 0 评论 -
SetWindowPos
SetWindowPos 函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。 函数原型:BOOL SetWindowPos(HWND hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,int cy,UNIT.Fla转载 2010-01-07 23:34:00 · 717 阅读 · 0 评论 -
SendMessage
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。 函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); 参数: hWnd:其窗口程序将接收消息的转载 2010-01-08 10:34:00 · 968 阅读 · 0 评论 -
CRect类介绍
一、CRect类介绍 CRect类与Windows RECT结构相似,并且还包括操作CRect对象和Windows RECT结构的成员函数。 在传递LPRECT,LPCRECT或RECT结构作为参数的任何地方,都可以传递CRect对象来代替。 注意:这个类是从tagRECT结构派生而来的。(tagRECT是RECT结构的不太常用的别名。)这意味着RECT结构的数据成员转载 2010-01-08 10:49:00 · 855 阅读 · 0 评论 -
Format函数
VC++中Format函数详解 首先看它的声明: function Format(const Format: string; const Args: array of const): string; overload; 事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的, 但并不多用,所以这里只对第一个介绍: function转载 2010-01-13 14:39:00 · 518 阅读 · 0 评论 -
HRESULT
函数返回值。如果这个函数是执行完返回的话将包含就有实际意义的数据,如果立即返回则包含状态信息--发送成功与否,并不能说明执行的如何。 HRESULT A value returned from a function call to an interface, consisting of a severity code, context information, a facility c原创 2010-03-02 16:37:00 · 567 阅读 · 0 评论 -
关于 BSTR, CComBSTR and _bstr_t
BSTR是COM中默认的字符串数据格式,和char* 及std::string等不同,BSTR is a null-terminated, length-prefixed, unicode string.下面是一个非常好的对BSTR的解释: A bstr is a pointer to a string of wide char. The string is not terminated. I原创 2010-03-02 16:52:00 · 3814 阅读 · 0 评论 -
strlen,strcpy,strcat,strcmp,strstr
strlen(char *str) : 求字符串长度strcpy(char *dest, char *src) : 把src拷贝到deststrcat(char *dest, char *src) : 把src连接到dest后面strcmp(char *s1, char *s2) : 按照各个字符(ascii)比较s1和s2,相等则返回0,否则返回ascii相减的结果strstr(char *s1原创 2010-02-26 10:13:00 · 988 阅读 · 0 评论 -
AfxMessageBox字符问题
错误 error C2665: AfxMessageBox : none of the 2 overloads could convert all the argument types 解决方式是改成 AfxMessageBox(_T("update")); 原因是如果程序中有define _UNICODE,则可用_T 或者 _TEXT将后面的内容转为UNICODE转载 2010-01-13 22:42:00 · 1153 阅读 · 0 评论 -
ctime
函数名: ctime 功 能: 把日期和时间转换为字符串 用 法: char *ctime(const time_t *time); 程序例: #include #include int main(void) { time_t t; time(&t); printf("Todays date and time: %s/n", ctim转载 2010-01-16 15:00:00 · 658 阅读 · 0 评论 -
SendMessage
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。 函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); 参数: hWnd:其窗口程序将接收消转载 2010-01-16 21:36:00 · 1035 阅读 · 0 评论 -
CWinThread
Windows以事件驱动方式工作,每个WIN32应用程序都至少包含一个消息队列和一个消息泵。消息队列建立在操作系统提供内存保留区中,消息泵不断搜寻消息队列,将取得的消息分发给应用程序的各个部分进行处理,这个过程叫做消息循环。基本消息循环如下: //从队列中提取消息 while(GetMessage(&msg,0,0,0)) { //转换消息参数 Translate转载 2010-01-19 22:59:00 · 1019 阅读 · 2 评论 -
CComPtr用法
COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但是,即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,例如:void SomeApp( IHello * pHello ){IHello* pCopy =转载 2010-01-15 22:55:00 · 605 阅读 · 0 评论 -
itoa
功 能: 把一整数转换为字符串 用 法: char *itoa(int value, char *string, int radix); 头文件: 程序例: #include #include int main() { int number = 123456; char string[25]; itoa(number, string转载 2010-01-16 15:01:00 · 912 阅读 · 0 评论 -
memset
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void memset(void *s, int i, unsigned n); 程序例: #include #include #include int main(void) {转载 2010-01-21 10:04:00 · 598 阅读 · 0 评论 -
CComVariant相关
与使用BSTR相较而言,使用VARIANT算比较简单了,设置了类型信息和数据就完事,而且,从内存管理的角度来说,VARIANT的内存方式也相对接近常规化,因不了解而出问题的概率大大减少了,但是,为了避免万一的情况发生,我们总是不懈努力,这就是CComVariant出现的动机吧(个人诳语丷丷)。 哈哈,其实CComVariant的出现应该从VARIANT的不足谈起(也就是所谓的使用VARI转载 2010-02-02 10:55:00 · 2997 阅读 · 0 评论 -
收藏
1. http://topic.youkuaiyun.com/t/20060503/21/4729341.html(关于HWND的解释) 2. LPDISPATCH是一个自动化接口,在COM中有一个IDISPATCH接口,LPDISPATCH是一个指向这个接口的指针。原创 2010-02-02 11:55:00 · 600 阅读 · 0 评论 -
CWND 和 HWND 的联系是什么
HWND 句柄,其实就是void*类型的,当然没有函数可调用,只有用API对它进行操作。Cwnd 是C++的一个类,有函数调用。但其操作的对像其实就是一个HWND的句柄。主窗口的CWND 就是框架窗口了,包括其他子窗口的容器。 --------------Cwnd是C++里面的一个类HWND是一个句柄,他是一个32位的数,相当于c里面的指针. ----------------原创 2010-02-02 11:57:00 · 804 阅读 · 0 评论 -
CreateThread
微软在Windows API中提供了建立新的线程的函数CreateThread, 概述: 当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤: 1在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回 2把线程退出码置为STILL_ACTIVE,把线程挂起原创 2010-02-02 14:55:00 · 1543 阅读 · 0 评论 -
CString 的 GetBuffer
这是一个非常容易被用错的函数,主要可能是由于大家对它的功能不太了解。其实点破的话,也不是那么深奥。 这个函数是为一个CString对象重新获取其内部字符缓冲区的指针,返回的LPTSTR为非const的,从而允许直接修改CString中的内容! 如果nMinBufLength 比当前buffer大,那么将调用ReleaseBuffer函数去释放当前的Buffer,用一个被请求的大小去覆盖这个buffer。 GetBuffer(int size)是用来返回一个你所指定大小可写内存的成员方法。它和被重载的原创 2010-07-02 15:29:00 · 587 阅读 · 0 评论