随笔分类 -  C++

C++
摘要:好久都没搞c++,写个c++类报“构造函数不能有返回类型”,在MSDN上找了半天都没有解决问题!太郁闷了。谷歌一下,才找到原因:原来是我定义的类后面没有用“;”结尾,构造函数默认把整个类作为返回值了 阅读全文
posted @ 2013-01-12 13:10 朱煜 阅读(2923) 评论(0) 推荐(0)
摘要:声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含义大不同:const int * pOne;//指向整形常量的指针,它指向的值不能修改int * const pTwo;//指向整形的常量指针,它不能在指向别的变量,但指向(变量)的值可以修改。const int *const pThree; //指向整形常量的常量指针。它既不能再指向别的常量,指向的值也不能修改。理解这些声明的技巧在于,查看关键字const右边来确定什么被声明为常量,如果该关键字的右边是类型,则值是常量;如果关键字的右边是指针变量,则指针本身是常量。下面的代码有助于说明这一 阅读全文
posted @ 2013-01-12 11:26 朱煜 阅读(9435) 评论(1) 推荐(0)
摘要:有关指针的争论备受瞩目。这是因为在程序中由于指针引发的错误可能是最难发现和最难解决的。在C++中导致难以发现和解决的错误的罪魁祸首是迷途(stray)指针。迷途指针也被称为失控(wild)指针或悬浮(dangling)指针,是将delete用于指针(从而释放它指向的内存),但没有将它设置为空时引发的。如果随后你在没有重新赋值的情况下使用该指针,后果将是不可预料的:程序崩溃算你走运。就如同交通银行变更了号码,但你仍去按原来绑定的按钮。这可能不会导致什么严重后果——也许这将拨向一个无人仓库的电话,另一方面,也许这个号码已经被重新分配给了一个军工厂,你拨打电话可能引发爆炸,将整个城市摧毁。总之,对指 阅读全文
posted @ 2013-01-12 11:24 朱煜 阅读(510) 评论(0) 推荐(0)
摘要:为什么下面这段代码#include <string.h>void main(){ string aaa= "abcsd d"; printf("looking for abc from abcdecd %s\n", (strcmp(aaa,"abc")) ? "Found" : "Not Found");}不能正确执行,说是string类型没有定义而下面:#include <string>using namespace std;void main(){ string aa 阅读全文
posted @ 2012-12-03 11:45 朱煜 阅读(24027) 评论(0) 推荐(0)
摘要:----- ADO连接SQL Server的数据库连接字符串模板----------身份验证模式为:"sql server和windows"Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名身份验证模式为:"仅windows"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial 阅读全文
posted @ 2012-11-08 15:36 朱煜 阅读(741) 评论(0) 推荐(0)
摘要:我一开始是在网上找资料,手工输入,不得行(hang),整得郁闷(-_-!),就用VB6写了个Winsock,用其来对本地主机80端口监听,在浏览器中向localhost提交form表单,以获得提交信息。监听代码如下(VB6):Dim AllData As StringPrivate Sub Command1_Click() Command1.Enabled = False Winsock1.LocalPort = "80" Winsock1.Listen End SubPrivate Sub Command2_Click() EndEnd SubPrivate Sub Wi 阅读全文
posted @ 2012-11-07 16:43 朱煜 阅读(1037) 评论(0) 推荐(0)
摘要:假设接受文件的网页程序位于http://192.168.29.65/upload_file/UploadFile.假设我们要发送一个图片文件,文件名为“kn.jpg”, 首先客户端链接 192.168.24.56 后, 应该发送如下http 请求: POST/logsys/home/uploadIspeedLog!doDefault.htmlHTTP/1.1 Accept: text/plain, */* Accept-Language: zh-cn Host: 192.168.24.56 Content-Type:multipart/form-data;boundary=----... 阅读全文
posted @ 2012-11-07 16:39 朱煜 阅读(58639) 评论(0) 推荐(4)
摘要:一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询 资源信息,而POST一般用于更新 资源信息(个人认为这是GET和POST的本质区别,也是协. 阅读全文
posted @ 2012-11-07 16:13 朱煜 阅读(932) 评论(0) 推荐(0)
摘要:UpdateData()对于可以接收数据的控件,如编辑控件来说,UpdateData()函数至关重要。当控件内容发生变化时,对应的控件变量的值并没有跟着变化,同样,当控件变量值变化时,控件内容也不会跟着变。UpdateData()函数就是解决这个问题的。UpdateData(true);把控件内容装入控件变量UpdateData(false);用控件变量的值更新控件如:有编辑控件IDC_EDIT1,对应的变量为字符串m_Edit1,1、修改变量值并显示在控件中:m_Edit1 = _T("结果为50");UpdateData(false);2、读取控件的值到变量中:用Cla 阅读全文
posted @ 2012-11-02 10:21 朱煜 阅读(335) 评论(0) 推荐(0)
摘要:DDX_TEXT()的作用可以理解为把字符串变量和控件的文本(WindowText)关联起来, DDX_Control()的作用可以理解为把变量和控件本身关联起来, DoDataExchange(pDX)就是处理所有变量与其关联控件交换数据的函数。void CView::DoDataExchange(CDataExchange* pDX){CFormView::DoDataExchange(pDX);DDX_Text(pDX, IDC_ID_VALUE, m_strID);DDX_Control(pDX, IDC_ID_VALUE, m_editID);}在程序中通过update(TRUE)取 阅读全文
posted @ 2012-11-02 10:20 朱煜 阅读(11599) 评论(0) 推荐(0)
摘要:[背景] 做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必须进行本地的注册,也就是说用户得首先要把该ActiveX控件(test.ocx)放在本机的%system%/system32下,然后运行DOS工具里面运行regsvr32 test.ocx命令进行注册。但如果真是这么去做的话,那么代表着你处于危险之中了,因为您是通过让用户自己去部署设置环境来达到你的目的,这就失去软件项目本身所存在的价值。那么面对这种情况,我们应该如何解决呢?聪明的你一定会很快就想到,我们可以使用户在客户端自动下载安装该ActiveX控件,这样一来即可以实 阅读全文
posted @ 2012-09-29 10:52 朱煜 阅读(2102) 评论(0) 推荐(0)
摘要:向原创者致敬!呵呵,不要以为这样发布就会成功。博文中说用工具查看我们自己开发的ActiveX控件GUID,但我的好像查看不了。其实我们在vc工程中就能查看到。双击DMyActiveX接口类, 找到 [ uuid(743F39F2-E3A5-4550-A203-4A1CFAE9ABCF), helpstring("MyActiveX Control"), control ] coclass MyActiveX { [default] dispinterface _DMyActiveX; [default, source] dispinterface _DMyActiveXEv 阅读全文
posted @ 2012-09-29 10:23 朱煜 阅读(800) 评论(0) 推荐(0)
摘要:向原创者表示敬意最近空闲时间比较多,自己研究了下ActiveX的技术。前面转载了一篇用c#开发ActiveX的文章,照着做了下,成功了,但毕竟xp的用户比较多,系统没有自带.netFramework,所以c#开发的ActiveX还不能普及。所以想学下用vc++开发ActiveX控件。由于我现在开发用的是c#和java语言,对c++还很陌生,所以花了半天看了下c++语法,但收效甚微。凭着自己多年来利用Baidu和Google 的成功经验和自己屡败屡战的意志,终于磕磕绊绊的完成了一个简单的ActiveX,并能通过IE让用户下载安装。 先说下我的开发环境:开发工具:vc6.0操作系统:win2003 阅读全文
posted @ 2012-09-29 09:55 朱煜 阅读(297) 评论(0) 推荐(0)
摘要:ODBC链接 适合数据库类型 链接方式 access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass; " dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------; " Oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass; " M 阅读全文
posted @ 2012-09-22 19:16 朱煜 阅读(634) 评论(0) 推荐(0)
摘要:Windows系统中的程序大部分都是通过消息和事件驱动的。在windows下的应用程序主要工作是进行消息的循环处理,通过循环等待消息的到来和事件的发生,然后对不同的消息和事件运行相关的代码,完成相应的操作。Windows提供了大量的消息,主要包括3种类型:标准消息、通知消息和命令消息。当然也可以根据用户的需要自定义一些消息。这些消息在MFC中有统一的处理框架,即消息映射机制。消息映射机制将消息及其处理函数表示成一一对应的表,并对这张表进行分析处理。总的来说,MFC消息映射机制的具体实现方法是:在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,即消息映射表。在消息映射表中,消息与对 阅读全文
posted @ 2012-09-14 14:56 朱煜 阅读(1178) 评论(0) 推荐(0)
摘要:C++应用中内存分为2部分,一部分是栈(stack,也称堆栈),另一部分是堆(heap)。 栈: 可以把栈看成是一叠卡片,最上面的卡片表示程序的当前作用域,这往往就是当前正在执行的函数。当前函数中声明的所有变量都置于栈顶帧中,即占用栈顶帧的内存,这就相当于一叠卡片中最上面的一张卡片。如果当前函数调用了另一个函数,举例来说,一开始一叠卡片位于最底的卡片是main()函数,main()函数调用了foo()函数,则相当于在这一叠卡片上加了另一张卡片,这样foo()函数就有了自己的栈帧(就是指一块内存空间)以供使用。从main()传递到foo()的所有参数都会从main()栈帧复制到foo()栈帧中。 阅读全文
posted @ 2012-08-14 09:50 朱煜 阅读(992) 评论(0) 推荐(0)
摘要:A a;A * a = new a();以上两种方式皆可实现类的实例化,有new的区别在于:1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。2.不加new在堆栈中分配内存3.大程序用new,小程序直接申请4.只是把对象分配在堆栈内存中5.new必须delete删除,不用new系统会自动回收内存带着疑惑网上找到这篇帖子,学习:小弟 最近刚接触 Visual C++看到一本 vc++ 6.0的教程上 在 声明了 一个类的对象后 没有用类似于 C# 或 Java中的new 来实例化而直接调用其公开成员,请问 vc++ 是不是可以这样调用 阅读全文
posted @ 2012-08-14 09:49 朱煜 阅读(21874) 评论(2) 推荐(3)
摘要:C++在类的构造函数中,可以两种方式初始化成员数据(data member)。 1,在构造函数的实现中,初始类的成员数据。诸如:class point{private:int x,y;public:point(int m=0,int n=0){x=m;y=n;}int GetX(){return x;}int GetY(){return y;}};2,还可以定义初始化成员列表(Initializer list)来初始化成员数据(data member)。 改写构造函数如下:point(int m=0,int n=0):x(m),y(n){}这样咋一看没有什么不同,确实,对于上面的这种简单列子来 阅读全文
posted @ 2012-08-13 16:50 朱煜 阅读(328) 评论(0) 推荐(0)
摘要:openGL VC6.0(Microsoft Visual C++ 6.0)环境配置1,头文件的包含:openGL相关的头文件在 */include/gl 目录中,主要有 gl.h glu.h glaux.h 根据需要include就行。2,连接库的设置:菜单- 工程- 设置- 连接- 对象/库模块 中加入opengl32.lib glu32.lib,注意用空格隔开各*.lib。[VC6.0具体示例]1,新建工程:菜单-文件-新建-工程-Win32 Application-工程名-确定-一个空工程-完成。2,加入源文件:文件-新建-C++ Source File-文件名-确定-编写代码(可以参 阅读全文
posted @ 2012-07-12 16:29 朱煜 阅读(783) 评论(0) 推荐(0)
摘要:在vc6中tools->options->directory可以设置vs2008怎么设置添加编译的头文件路径的?以下两种途径任选一种1)在解决方案上点右键打开解决方案属性页,通用属性,测试源文件,包含源代码的目录(在这里设置)~~~~~~~~~~~~2)工程上右键->属性->配置属性->C/C++->附加包含目录 阅读全文
posted @ 2012-07-12 16:15 朱煜 阅读(4324) 评论(0) 推荐(0)