C/C++
荔-枝-lin
其实,怀念,在离开它之前就已经发生。
展开
-
C/C++中static关键字作用总结
1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){转载 2015-03-18 11:00:42 · 432 阅读 · 0 评论 -
sqlite3使用简介
一.使用流程要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll文件放到当前目录下,就完成配置可以使用sqlite了。使用的过程根据使用的函数大致分为如下几个过程:sqlite3_open() sqlite3_prepare() sqlite3_st转载 2012-09-27 10:59:40 · 522 阅读 · 0 评论 -
关于MFC中CString的用法
CStringCString没有基类。一个CString对象由可变长度的一队字符组成。CString使用类似于Basic的语法提供函数和操作符。连接和比较操作符以及简化的内存管理使CString对象比普通字符串数组容易使用。CString是基于TCHAR数据类型的对象。如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为转载 2012-09-10 14:52:45 · 851 阅读 · 0 评论 -
CString总结
关于CString总结 前言:串操作是编程中最常用也最基本的操作之一。 做为VC程序员,无论是菜鸟或高手都曾用过Cstring。而且好像实际编程中很难离得开它(虽然它不是标准C++中的库)。因为MFC中提供的这个类对我们操作字串实在太方便了,CString不仅提供各种丰富的操作函数、操作符重载,使我们使用起串起来更象basic中那样直观;而且它还提供了动态内存分配,使我们减少了多少字符串转载 2012-09-10 14:54:40 · 521 阅读 · 0 评论 -
VC中如何调用其他的可执行程序
C++程序中调用exe可执行文件在开发项目的时候,有的时候会分开来开发,分开的有时是exe文件,有的时候也会调用现成的工具包里面的一些exe文件,这样在项目里面就要通过调用exe文件来使用。那么在C++里面直接调用exe文件的方法有哪些呢?现在可考虑的方法主要有:a.使用system函数b.使用exec或者是execv函数c.使用WinExec函数d.使用C转载 2012-09-07 17:21:43 · 1085 阅读 · 0 评论 -
InternetOpen\InternetOpenUrl\InternetReadFile 等相关Win32 网络API 使用详细说明
这篇技术性文章讨论了如何利用Microsoft Win32网络函数创建一个网络浏览器。这篇文章的宗旨是让读者了解一些Win32网络函数的作用、能力和使用范围,而不是为这些功能给出一个详细的文档。这篇文章所配合的SurfBear样本应用程序使用Win32网络函数从网络服务器上读取HTML文件,并把它们显示成原始的、没有经过格式化的文本。 介绍 不通过网络,你就无法了解我的一个朋友。计算机杂志已经在i转载 2012-08-28 11:15:24 · 1199 阅读 · 0 评论 -
HINTERNET 句柄
这篇文章的内容可以简单总结如下:WinINet函数创建和使用类型为HINTERNET的句柄HINTERNET句柄不能与其他类型的句柄互换使用用InternetCloseHandle关闭HINTERNET句柄有多种类型的HINTERNET句柄,它们形成一个树结构,如下图所示: 图中带阴影的方框创建的HINTERNET句柄被下一级的函数使用;背景转载 2012-08-27 18:00:05 · 8742 阅读 · 2 评论 -
CInternetSession.OpenUrl连接限制(转)
译序:这是MSDN里的一篇,讲的很明白了。真不知道微软怎么想的,这么重要的东西,却藏藏掖掖的,被我发现了(前几天为这个问题郁闷了一段时间),翻译出来,让以后的开发人员少走点弯路吧。整个文章的意思是,如果你想用WinInet做多线程断点续传的开发,还是再多考虑考虑吧!! 摘要: WinInet会限制到单个HTTP服务器的同时连接数目。如果你超越这个限制,请求都将转载 2012-08-27 16:23:40 · 2540 阅读 · 0 评论 -
const char*, char const*, char*const的区别以及静态和非静态变量、函数的总结
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to转载 2012-08-24 13:51:26 · 694 阅读 · 0 评论 -
operator重载运算符
一、重载例子:class COperator{public: int a; int b;public: COperator (void); COperator (COperator &op); ~COperator (void);//操作符重载 COperator operator +(COperator &op); friend COperator operato转载 2012-09-05 14:16:16 · 1020 阅读 · 0 评论 -
怎样在VC++中访问和修改注册表
#include #include #include #include #include #include void main() { long result; PHKEY hkeyMykey; LPDWORD dwFlag; //LPDWORD dwType; result=RegCreateKeyEx(HKEY_LOCAL_MACHINE,"转载 2012-09-18 15:51:10 · 553 阅读 · 0 评论 -
OnEraseBkGnd and OnPaint and OnCtlColor
在OnEraseBkGnd中,如果你不调用原来缺省 的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面, 由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况 下是白刷),而随后你又自己重画背景造成屏幕闪动.翻译 2012-10-13 12:00:31 · 570 阅读 · 0 评论 -
【讨论】vc++窗口的创建过程
一、什么是窗口类 在Windows中运行的程序,大多数都有一个或几个可以看得见的窗口,而在这些窗口被创建起来之前,操作系统怎么知道该怎样创建该窗口,以及用户操作该窗口的各种消息交给谁处理呢?所以VC在调用Windows的API(CreateWindow或者CreateWindowEx)创建窗口之前,要求程序员必须定义一个窗口类(不是传统C++意义上的类)来规定所创建该窗口所需要的各种信息,转载 2012-10-18 11:36:57 · 735 阅读 · 0 评论 -
线程中CreateEvent和SetEvent及WaitForSingleObject的用法
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面.CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 WaitForSingleObject()等待,直到参数所指定的OBJ转载 2013-03-01 13:32:15 · 812 阅读 · 0 评论 -
Socket中如何设置连接超时
设置connect的超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows网络编程技术》原话)。使用方法与解释请见《Windows网络编程技术》。 在使用此函数前,需转载 2013-03-04 14:06:14 · 650 阅读 · 0 评论 -
UNREFERENCED_PARAMETER的作用
UNREFERENCED_PARAMETER 的作用2007年06月16日 星期六 14:38我们从 UNREFERENCED_PARAMETER 开始吧。这个宏在 winnt.h 中定义如下: #define UNREFERENCED_PARAMETER(P) (P) 换句话说 UNREFERENCED_PARAMETER 展开传递的参数或表达式。其目的是避免编译器关于未引用参转载 2012-12-17 13:28:55 · 584 阅读 · 0 评论 -
regopenkeyex用法
RegCreateKeyEx 通过RegCreateKeyEx函数可以在 .... RegSetValueEx函数可以设置注册表中键的值,如今修改注册表成为继超频之后的又一大热点,许多CFAN通过对注册表的修改使Win98显得更加个性化,诸多报刊杂志也纷纷扯起注册表这面旗帜,令人遗憾的是,在介绍注册表修改的众多的文章中,大都以手工修改为例,极少数文章也只介绍有关修改注册表软件的用法,至于如何在转载 2012-12-17 16:57:03 · 1809 阅读 · 0 评论 -
AllocSysString的使用
今天看到AllocSysString的函数,不知道干什么用的、它的作用是什么、在什么地方使用它??就baidugoogle了一下,最后也没搞懂只查到了,谁都可以调用他,关键是谁来释放释放使用SysFreeString()这个函数;如果是COM要传出字符串,基本上就只能使用AllocSysString函数了;如果是给COM传入一个字符串就没多大必要用这个函数了,这还会带来到底有谁释放的问题。CS原创 2012-12-07 11:06:37 · 8083 阅读 · 0 评论 -
SDK,API和MFC区别【转】
SDK很多人都认为SDK都是Microsoft公司提供的一个东东(具体什么东西我说了怕你就要关了这个网页了),其实不然,很多的软件公司和硬件公司在发布自己的产品的时候都会提供SDK,就比如说现在如火如荼的iPhon吧,他也同样发布了SDK,一些编程爱好者或是一些软件公司就会根据这些SDK开发出一系列软件放在iPhon上使用,也就是所谓的第三方开发,这样我们的手机也就不会显得太单调,SDK就是为转载 2012-11-08 10:20:06 · 650 阅读 · 0 评论 -
C++中关于类型转换的学习记录
记录一下每天学到的点滴知识,希望和大家一起经常温习。1.CString 型转化成 int 型,你可以使用_atoi()进行转换,但最好可以使用_ttoi()进行转换,它在 ANSI 编码系统中被编译成_atoi(),而在 Unicode 编码系统中编译成_wtoi()。你也可以考虑使用_tcstoul()或者_tcstol(),它们都能把字符串转化成任意进制的长整数(如二进制、八进制、十进制或原创 2012-11-07 11:11:13 · 878 阅读 · 0 评论 -
LPCTSTR,LPCSTR,LPTSTR,LPSTR的区别及用法
LPCSTR 32-bit 指针,指向一个常量字串 LPSTR 32-bit 指针,指向一个字串 LPCTSTR 32-bit 指针,指向一个常量字串。此字串可移植到Unicode 和DBCS LPTSTR 32-bit 指针,指向一个字串。此字串可移植到Unicode 和DBCS --------转载 2012-11-07 09:25:56 · 1107 阅读 · 0 评论 -
WM_GETMINMAXINFO的作用
如果想要实现窗口全屏,并且还有状态栏,会出现问题,那就是OnGetMinMaxInfo函数的作用。你可以试一下,如果把这个函数去掉,则当你按下工具栏中的全屏显示按钮时,框架视图确实变大了,但没有想象的那样实现全屏显示,底边留下一个状态栏——一个有些发育不良的全屏显示窗口。为什么会这样呢?经过调试后,发现问题出在WM_GETMINMAXINFO消息的处理上。在Windows中,无论什么时候以何种方式转载 2012-11-06 14:13:12 · 5629 阅读 · 0 评论 -
C++内联函数(Inline)介绍
介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去转载 2012-09-04 14:35:58 · 447 阅读 · 0 评论 -
有关字符串类型总结
先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。 LP的含义是长指针(long pointer)。LPSTR是一个指向以‘\0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR。而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数原创 2012-08-25 10:33:04 · 619 阅读 · 0 评论 -
友元函数用法
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。 友元函数 友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。下面举一例子说明友元函数的应用。 #include #include class Point { p转载 2012-09-04 17:43:08 · 3354 阅读 · 0 评论 -
C++的可移植性和跨平台开发[1]--编译器
在跨平台的开发过程中,很多问题都和编译器有关。因此我们先来聊聊编译器相关的问题。 ★编译器的选择 首先,GCC是优先要考虑支持的,因为几乎所有操作系统平台都有GCC可用。它基本上成了一个通用的编译器了。如果你的代码在A平台的GCC能够编译通过,之后拿到B平台用类似版本的GCC编译,一般也不会有太大问题。因此GCC是肯定要考虑支持的。 其次,要考虑是否支持本地编译转载 2012-08-30 13:34:17 · 511 阅读 · 0 评论 -
C++内存分配秘籍—new,malloc,GlobalAlloc详解
C++内存分配秘籍—new,malloc,GlobalAlloc详解 _______只为因内存分配而无法入眠的程序员一。关于内存 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全转载 2012-08-16 14:25:44 · 476 阅读 · 0 评论 -
远程开机控制详解
远程开机Wake onLAN(WOL),俗称远程唤醒,是现在很多网卡都支持的功能。而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet)。MagicPacket格式虽然只是AMD公司开发推广的技术,并非世界公认的标准,但是仍然受到很多网卡制造商的支持,因此许多具有网络唤醒功原创 2012-08-15 17:09:18 · 1461 阅读 · 0 评论 -
bitblt 和stretchblt的区别 解释、、、
CDC::BitBltBOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );返回值:函数成功,返回非零值,否则为0。参数: x 指定目标矩形左上角的逻辑x坐标。 y 指定目标矩形左上角的逻辑y坐标。 nWidth 指定目翻译 2012-08-07 22:15:23 · 786 阅读 · 0 评论 -
GetPrivateProfileString读取配置文件(.ini)
VC:::::::::::配置文件中经常用到ini文件,在VC中其函数分别为:写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);读取.ini文件:DWORD GetPrivateProfileString(L翻译 2012-08-03 18:07:19 · 461 阅读 · 0 评论 -
GetWindowLong函数
今天在看一个代码里头写了GetWindowLong (hwnd, 0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第2个参数为0是指什么,MD,很恼火,最近终于在一个国外网站找到,我在这篇文章贴了,网站是http://www.codeguru.com/forum/archive/index.php/t-243778.html先收集所有关于此函数的使用方法以及程序代码转载 2012-08-03 16:51:14 · 1464 阅读 · 0 评论 -
将窗口移动到前端, BringWindowToTop() 的问题
有一段代码,是在我们的应用程序中将其他应用程序的窗口移动到最前端,当我们的程序在 Vista 下运行的时候遇到了些问题,有时候被移动窗口只是闪动任务栏上的按钮,并未能将窗口移动到前方来. 研究了一下,发现是否能够移动成功和当前自身进程所附加的输入上下文有关, 参见WIN32 API AttachThreadInput()... 写了个 MyBringWindowToTop() 如下,转载 2012-08-03 16:42:43 · 653 阅读 · 0 评论 -
按照RFC3984协议实现H264视频RTP打包(附源代码)
一、本示例代码在我的电脑上实现了对标准H264码流的RTP打包发送到本机的1234端口,用VLC播放器从1234端口能接收到该码流并实时播放。代码附有详细的注释,应该很容易理解(前提是大家稍微对RFC3550 RFC3984协议有了解)。 二、本示例代码是按照RFC3984协议仅完成了RTP打包,并没有完成发送RTCP。原因就引用这位达人的话:“1.RTCP里头有很多关于RTC转载 2012-03-13 11:43:18 · 2102 阅读 · 2 评论 -
实现VC程序启动时最小化到任务栏(完美解决闪烁问题)
窗体不出现,等用户点击任务栏图标再出现窗口。和一些防火墙什么的软件类似。这种效果实现并不是很困难的,硬是找不到最好的。为什么呢?首先,在网络上找到的大部分说法都是:BOOL CBBBApp::InitInstance()...{ ...m_pMainWnd->ShowWindow(SW_HIDE); // 原来是m_pMainWnd->ShowWindow(SW_SHOW转载 2011-12-08 11:13:46 · 717 阅读 · 0 评论 -
C++的可移植性和跨平台开发[3]--异常处理
上一个帖子“语法”由于篇幅有限,没来得及聊异常,现在把和异常相关的部分单独拿出来说一下。 ★小心new分配内存失败 早期的老式编译器生成的代码,如果new失败会返回空指针。我当年用的Borland C++ 3.1似乎就是这样的,现在这种编译器应该不多见了。如果你目前用的编译器还有这种行为,那你就惨了。你可以考虑重载new操作符来抛出bad_alloc异常,便于进行异常处理。 稍微转载 2012-08-30 13:35:21 · 446 阅读 · 0 评论 -
C++的可移植性和跨平台开发[2]--语法
目前还有相当一部分开发人员在使用老式编译器干活,这些老式编译器可能对C++98支持不够。因此,当你的代码移植到这些老式的编译器上时,可能会碰到一些稀奇古怪的问题(包括编译出错和运行时错误)。下面这些注意事项有助于你绕过这些问题。 强调一下,后面提到的好几个条款都是通过回避C++的新语法来保证移植性。如果你用的是新式编译器,那么你可以不理会这些条款。 ★小心for循环变量的作用域(不转载 2012-08-30 13:34:54 · 444 阅读 · 0 评论 -
WTL,ATL与MFC之比较
MFC,ATL,WTL的历史沿袭需求推动了技术的发展,从MFC到ATL,从ATL再到WTL的发展历程我想就是一个最好的见证。早期的VC++开发者们发现了MFC(Microsoft Foundation Classes) 这样一个好东东。他们发现,MFC提供了一个强大的类库,很好的满足了面向对象编程的需要。随着泛型编程技术的发展和时间的推移,慢慢地,他们慢慢觉得MFC的类库过于庞大和宽泛转载 2012-08-21 09:25:24 · 474 阅读 · 0 评论 -
数组指针与指针数组
数组指针 为什么在有些时候我们需要定义指向数组而不是指向数组元素的指针?如何定义? 答案与分析: 使用指针,目的是用来保存某个元素的地址,从而来利用指针独有的优点,那么在元素需要是数组的情况下,就理所当然要用到指向数组的指针,比如在高维需要动态生成情况下的多维数组。 定义例子如下: int (*pElement)[2]。 下面是一个例子:转载 2012-09-03 16:46:02 · 357 阅读 · 0 评论 -
C/C++基础必知必会
2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数转载 2012-09-03 10:25:08 · 834 阅读 · 0 评论 -
C++ STL map的使用
1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1转载 2012-08-31 17:16:59 · 370 阅读 · 0 评论