自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风言的专栏

MFC,STL,MIS,ERP And Other

  • 博客(39)
  • 收藏
  • 关注

转载 C++随机函数

C++随机函数(VC program):#include #include #include using namespace std; #define MAX 100int main(int argc, char* argv[])

2011-09-08 13:50:15 662

原创 C++中的空类,默认产生那些类成员函数

class Empty{public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty();

2011-09-06 13:12:43 498

原创 c++关键字explicit使用指南

explicit作用:在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。explicit使用注意事项:    *      explicit 关键字只能用于类内部的构造函数声明上

2011-08-25 12:14:08 496

原创 C/C++ 误区一:void main()

很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) .C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( )

2011-07-18 11:40:01 1771

原创 调用FindFirstVolume编译错误是undeclared identifier,怎么回事?

我就是把MSDN中的例子直接考到vc中编译,结果就出现undeclared   identifier的错误,察看该函数就需要包含window.h即可,我也包含了啊,怎么回事呢? 我就是把MSDN中Enumerating   Mount   Points这个例子直接考过去未作任何改

2011-07-14 14:56:33 1978 2

转载 STL中sort的用法举例

<br />date:2010-07-02<br />对象数组排序这里展示了两种方法,定义比较函数或通过重载比较运算符使得类本身是可以比较的,就像基本类型一样。<br />定义比较函数,既可以通过定义比较运算符(如operator <),也可以直接定义函数(如compare)。<br />重载运算符之后,可以在sort函数中通过less或greater或less_equal等来调整升序还是降序,默认是升序。<br />另外,重载运算符后,函数bool operator < 就不要了,否则用g

2011-03-02 15:46:00 4271

转载 AssertValid和Dump函数的应用

<br />原文地址:<br />http://tsitao.blog.163.com/blog/static/29795822006914105840496/#comment=fks_082074086083084067085082084095086095086074081094084<br /> <br />VC的调试中,AssertValid和Dump函数的应用CObject::AssertValid 成员函数提供对对象内部状态的运行时检查。尽管从 CObject 派生类时不需要重写 Assert

2011-02-18 13:03:00 642

原创 VC++(MFC日期函数)

MFC提供了两个日期和时间类CTime和CTimeSpan,分别代表相对时间和绝对时间。CTime是基于格林威治平均时间(GMT)的,本地的时间由环境变量TZ决定。CTimeSpan代表了时间间隔。<br />CTime类由下列成员函数:<br />CTime()<br />创建一个CTime对象。<br />GetCurrentTime()<br />由当前时间创建一个CTime对象。<br />GetTime()<br />由CTime对象返回一个time_t变量。<br />Get

2010-12-08 14:07:00 3863

原创 VC INI文件读写

VC中用函数读写ini文件的方法<br /><br />         ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。<br /><br /><br />一、向ini文件中写入信息的函数<br />1. 把信息写入系统的wi

2010-12-08 14:02:00 665

原创 wsprintf

<br />      在C语言中格式化字符串可以使用printf,但是在WINDOWS编程设计中却行不通了,但是却有变通的方法,那就是用 wsprintf这个函数 它的格式如下:<br />wsprintf(缓冲区,格式,要格式化的值);<br />      第一个参数是字符缓冲区,后面是格式字符串,wsprintf不是将格式化结果写到标准输出,而是将其写入缓冲区中,该函数返回该字符串的长度。<br /> <br />比如我们想通过MessageBox来输出一个整形变量的值,可以用以下代码实现:

2010-12-07 16:57:00 841

转载 善用GetLastError函数

<br />      在编程过程中,当程序出现错误,却又不知道错误的原因时,可以使用GetLastError函数,它可以帮助你快速找到出错的原因和语句。<br />      可以直接使用GetLastError函数得到错误代码,然后查找MSDN找到代码对应的错误原因,也可使用下面函数直接把错误原因显示出来:<br />void ShowErrMsg() <br />{ <br />    TCHAR szBuf[80]; <br />    LPVOID lpMsgBuf;<br />

2010-12-07 16:05:00 839

原创 字符串常量定义时的换行问题

    如果我们在一行代码的行尾放置一个反斜杠,c语言编译器会忽略行尾的换行符, 而把下一行的内容也算作是本行的内容。这里反斜杠起到了续行的作用。<br />    构建较长的字符串是续行的常见用途, 还有一个作用是定义跨行的宏。<br />    如果我们不使用反斜杠,当我们试图初始化一个跨多行的字符串是,c语言编译器就会发出警告。如下面的语句所示:<br />char letters[] = {"abcdefghijklmnopqrstuvwxyz<br />  ABCDEFGHIJKLMNOPQRST

2010-10-18 15:16:00 7491 1

转载 线程同步 CCriticalSection(临界区类)

<br />线程同步 CCriticalSection(临界区类)<br /> <br />当多个线程访问一个独占性共享资源时,可以使用“临界区”对象。任一时刻只有一个线程可以拥有临界区对象,拥有临界区的线程可以访问被保护起来的资源或代码段,其他希望进入临界区的线程将被挂起等待,直到拥有临界区的线程放弃临界区时为止,这样就保证了不会在同一时刻出现多个线程访问共享资源。 <br />CCriticalSection类的用法如下:<br /> 定义CCriticalSection类的一个全局对象(以使各个线程均

2010-09-07 15:04:00 1084

原创 reinterpret_cast

reinterpret_cast是C++里的强制类型转换符。   操作符修改了操作数类型,但仅仅是重新解释了给出的对象的比特模型而没有进行二进制转换。   例如:int *n= new int ;   double *d=reinterpret_cast (n);   在进行计算以后, d 包含无用值. 这是因为 reinterpret_cast 仅仅是复制 n 的比特位到 d, 没有进行必要的分析。   因此, 需要谨慎使用 reinterpret_cast.   == =================

2010-09-07 13:18:00 1097

原创 关于C++ const 的全面总结

<br />C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。<br />Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。<br /> <br />一、Const作用<br />   如下表所示:<br /><br />No.<br />作用<br />说明<br />参考代码<br />1<br />可以定义const常量<br /><br

2010-09-06 15:41:00 488

原创 C++赋值的两种形式

<br />C++赋值的两种形式<br />        C++支持两种初始化变量的形式:复制初始化(copy-initialization)和直接初始化(direct-initialization)。     <br />        复制初始化语法用等号(=),直接初始化则是把初始化式放在括号中。   int ival(1024); //direct-initialization <br />        int ival = 1024; //copy-initialization, //此时如果

2010-09-06 14:54:00 1546

转载 assert() 函数用法

<br />assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: <br />#include <assert.h> <br />void assert( int expression ); <br />assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息, <br />然后通过调用 abort 来终止程序运行。 <br />请看下面的程序清单badptr.c: <br />#inclu

2010-09-03 14:50:00 848

原创 RGB宏详解

#define RGB(r,g,b)   ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))这是个带三个参数的宏首先将r,g,b强制转换成BYTE型,之后g左移8位,b左移16位,并把结果分别强制转换成DWORD型,最后将r,左移8位后的g,还有左移16位后的b三者做按位或,所得的结果强制转换成COLORREF类型 分解后的表达式:((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g)))|(((DWORD)(BYTE)(b))))//-------

2010-08-30 13:29:00 10626

转载 HDC,CDC,CWindowDC,CClientDC,CPaintDC基础

<br /> <br />首先说一下什么是DC(设备描述表) <br />解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 <br /><br />在c++ 编程中常会见到HDC,CDC,CClientDC,CPaintDC,CWindowDC这样

2010-08-30 11:08:00 939 1

原创 |与||的区别

从网上介绍资料来看,|与||至少有两点区别:1、运算类型不一样,  |是算术运算,它最终会返回个数,int 、long、、、。而||是逻辑运算符,它只返回两个结果TRUE或FALSE。2、运算规则不一样。|是算术运算符,它会计算表达式的每一个部分。||是短路表达式。只要有一个表达式为真那么就不再计算其下一个表达式。如:(a==b)|(B==C)会将|的前半部分和后半部通计算好了以后,再进行位或运算,最近返回计算结果。而(a==b)||(B==C)只要(a==b)为真,就立即返回。&和&&也是同理,只不过返回

2010-08-19 22:20:00 2191

转载 AssertValid和Dump 这两个函数的作用

<br />AssertValid函数是用来判断表达式的合法性或正确性,如果不正确或不合法则终止程序并返回相应的提示信息  <br />  如AssertValid(t==0);//用来判断t是否等于0,如果t!=0则终止程序  <br />  Dump函数一般用来显示debug信息的,其函数中的内容一般在debug时,在debug窗口中才能看到。<br />CObject::AssertValid   成员函数提供对对象内部状态的运行时检查。尽管从   CObject   派生类时不需要重写   Asse

2010-08-18 14:39:00 968

原创 失望和希望

到我开始写这篇为止,已经两个月没有上班了。找工作是这个月才开始的事情。本来离开上一家公司,是希望找到一个新的开始,几轮面试下来我开始有点担心了,C++的工作真的很难找。面试的机会很多,笔试一般都能过,但是面试的时候听说没有C++工作经验直接Pass接。今天心理一直慌慌的,难受的很,脑子里乱七八糟的事相的太多,我已经没有之前的平静和从容了。但是想再多有什么用,再多的担心也于事无补,我要整理思绪,理出个头绪一件事一件事的做。

2010-08-11 01:07:00 525

转载 VC++深入详解·chapter20·笔记

<br />1、HOOK过程,即钩子过程<br />    1> 操作系统将我们感兴趣的消息都先交给钩子过程,后者实际上就是一个函数,在此函数中进行判断,如果是我们希望屏蔽掉的消息,那么就直接处理掉,不让它在继续向下传递。<br />    2> SetWindowsHookEx函数:安装一个钩子过程,并将其放进钩子链中。<br />    多个钩子过程就形成了钩子链,要注意的是,最后安装的钩子过程总是排列在该链的前面。<br />    3> UnhookWindowsHookEx函数:从钩子链中移走一个

2010-08-04 22:15:00 1226

转载 VC++深入详解·chapter18·笔记

<br />1、ActiveX控件:<br />   1> 不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行,可看成是一个极小的服务器应用程序。<br />   2> 一个典型的ActiveX控件,它具有方法、属性、事件这三种特性<br />   3> 一个文件中可以包含多个ActiveX控件<br />   4> 在实际编程时,我们可以将常用的功能封装在一个ActiveX控件中<br />   5> 对ActiveX来说,它的底层实际上是采用COM技术实现的<br />   6> OCX是Acti

2010-08-04 22:13:00 1029

转载 VC++深入详解·chapter17·笔记

<br />1、介绍进程间通信的四种方式:剪贴板、匿名管道、命名管道、邮槽<br /><br />2、使用剪贴板实现进程间通信<br />   发送数据到剪贴板:<br />   void CClipboardDlg::OnBnClickedBtnSend()<br />   {<br />       // TODO: 在此添加控件通知处理程序代码<br />       if(OpenClipboard())<br />       {<br />           CString strSend;/

2010-08-03 00:10:00 1380

转载 VC++深入详解·chapter16·笔记

<br />1、事件对象:也属于内核对象(mutex属于内核对象),包含以下三个成员<br />   1> 使用计数<br />   2> 用于指明该事件是一个自动重置的事件还是一个人工重置的是件的bool值<br />   3> 用于指明该事件处于已通知状态还是未通知状态的bool值<br /><br />2、实现线程同步:利用事件对象<br />   1> 相关函数:   <br />   CreateEvent函数:创建或打开一个命名的或匿名的事件对象<br />   ResetEvent函数:把指定

2010-08-03 00:09:00 636

转载 VC++深入详解·chapter15·笔记

<br />1、MFC中加载套接字库:<br />   1> 在App类的InitInstance函数中使用函数AfxSocketInit函数进行加载:<br />   if(!AfxSocketInit()) //"Failed to Initialize Sockets",MB_OK| MB_ICONSTOP)<br />   {<br />       AfxMessageBox(_T("加载套接字库失败!", MB_OK | MB_ICONSTOP);<br />       return fals

2010-08-03 00:06:00 976

转载 VC++深入详解·chapter14·笔记

<br />1、基于TCP的网络应用程序的编写<br />   服务器端程序:<br />// tcpserver.cpp : 定义控制台应用程序的入口点。<br />//<br />#include "stdafx.h"<br /><br />#include <Winsock2.h><br />#include <stdio.h><br />#pragma   comment(lib,   "ws2_32.lib ")<br />void main()<br />{<br />   WORD wVers

2010-08-03 00:05:00 518

转载 VC++深入详解·chapter13·笔记

<br />1、CArchive类:<br />   1> CArchive类没有基类。我们可以利用此类将对象数据保存到永久设备(如磁盘文件)上。<br />   2> 让对象数据持久性的过程称之为串行化(或序列化)<br />   3> 读者可以认为一个CAchive对象就是一种二进制六。一个CAchive对象以一种有效的、非冗余的格式处理二进制对象数据。<br />   4> 创建CArchive对象前先创建一CFile类或其派生类对象与之关联,且CFile对象的打开方式与文档对象的加载/保存状态相一致

2010-08-03 00:04:00 564

转载 VC++深入详解·chapter12·笔记

<br />1、在C语言中,对于文件的操作是利用FILE结构体进行的<br />   1> C语言对文件的操作使用了缓冲文件系统<br />   2> rewind函数:该函数的功能是将文件文件指针重新放置到文件的开始出,eg:rewind(pFile);此功能也可用fseek实现,eg: fseek(pFile, 0, SEEK_SET);<br />   3> fopen函数:FILE *fopen(const char *filename, const char *mode);<br />   4>

2010-07-30 01:10:00 752

转载 VC++深入详解·chapter11·笔记

<br />1、当我们为视类手动添加WM_PAINT的消息响应后,其响应函数OnPaint()函数就不会自动去调用OnDraw()函数了,要想继续调用此函数,必须手动添加:OnPrepareDC(&dc); OnDraw(&dc);<br />2、增加窗口滚动的功能:<br />    1> 代码添加过程:<br />        (1)在创建程序时,选择view类的基类为CScrollView类。若程序已经创建,则把view类的.h文件和.cpp文件中的CView全换成 CScrollView<br /

2010-07-30 01:09:00 676

转载 VC++深入详解·chapter10·笔记

<br />1、颜色对话框的使用:<br />   CColorDialog dlg;<br />   dlg.m_cc.Flags|=CC_RGBINIT;//此处必须用或操作,否则原值将被擦掉。<br />   dlg.m_cc.rgbResult=m_clr;<br />   if(IDOK==dlg.DoModal())<br />   {<br />       m_clr=dlg.m_cc.rgbResult;<br />   }<br />   注:如果想要设置颜色对话框初始选择的颜色,则需要

2010-07-30 01:08:00 971

转载 VC++深入详解·chapter09·笔记

<br />1、SetWindowLong:<br />   1> 改变指定窗口的属性<br />   2> 原型:LONG SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong);<br />   3> eg:改变控件的窗口过程:<br />       WNDPROC prevProc=(WNDPROC)SetWindowLong(GetDlgItem(IDC_EDIT1)->m_hWnd, GWL_WNDPROC, (LONG)NewProc); (2

2010-07-30 01:07:00 693

转载 VC++深入详解·chapter08·笔记

<br />1、WM_INITDIALOG消息:在对话框要显示之前发送。其消息响应函数为OnInitDialog函<br />    (override)。可以在此函数中做某些初始化工作。<br /><br />2、对以控件添加相关联的Varible时,优先使用右键添加变量功能。(代码会在三处改变:声明、初始 化、DoDateExchange函数)<br /><br />3、通常都是在属性表单的构造函数中添加属性页对象。<br /><br />4、属性表单构造时,优先把添加属性页的操作放在第二个构造函数中,

2010-07-30 01:06:00 712

转载 VC++深入详解·chapter07·笔记

<br />1、堆上分配的内存,其生命周期是和整个应用程序的生命周期相同的。<br /><br />2、在MFC中,对资源的操作通常都是通过一个与资源相关的类完成的。<br /><br />3、创建一非模态对话框时,应在类中覆盖OnOk这个virtual function,然后在此虚函数内部<br />     调用DestroyWindow销毁窗口。并不再调用基类的OnOk函数(将其注释掉<br />    /*this->*/DestroyWindow();<br />    //CDialog::On

2010-07-29 01:41:00 663

转载 VC++深入详解·chapter04-06·笔记

<br />chapter4:<br />1、DC:Device Context 设备描述表(设备上下文)<br /><br />2、画刷的创建:<br />    CBrush m_brush(RGB(0, 255, 0));<br />    或<br />    CBrush m_brush;m_brush.CreateSolidBrush(RGB(0, 255, 0));<br /><br />3、字体的创建:<br />    CFont m_font;<br />    m_font.Creat

2010-07-29 01:36:00 745

转载 VC++深入详解·chapter 01·笔记

1、API:Application Programming Interface 应用程序开发接口<br />    SDK:Software Development Kit 软件开发包<br />    CS_:Class Style 类样式(16位的常量,只有某一位为1,位标志)<br />    DC:Device Context 设备描述表<br />    MFC:Microsoft Foundation Class 微软基础类库<br />    GDI:Graphic Device Interf

2010-07-29 01:32:00 599

转载 面向对象编程,我的思想(下部)

<br />2.3深入探讨函数:<br />2.3.1构造函数、默认构造函数、缺省构造函数<br />       对于上面的实例,它已经能完成绝大部分工作了,但它还是不完善的,还有许许多多的细节等到我们去完善!也许有的同学已经注意到了,当我创建完“jingwei”这个对象时,这个对象的所有的属性都是空的,也就是说:这个对象的姓名是未定的、年龄是未定的、性别是未定的、薪水是未定的、午餐也是未定的。而我们想把这些属性都添加上去,就还要用对象调用相应的方法,去一个个修改!天啊,这简直是太麻烦了!有没有什么好方法

2010-07-29 01:26:00 463

转载 面向对象编程,我的思想(上部)

面向对象编程,我的思想<br />前言:<br />整理这份资料的目的是为了帮助我的同学能够更直观的理解面向对象的编程。让后来者能够少走一些弯路,但其中不免有许多漏洞及错误,也还请前辈提出宝贵的更改意见,毕竟交流会让我们不断的进步。<br />技术是日新月异的,他不会等待你的成长。技术要拿出来于别人交流,自己学是自己主观意识上的理解,有对有错!交流会让进步变得更快。我认为如果计算机的体系结构不发生革命性的变化,我们现在所应用的程序语言也就百变不离奇踪了!学编程学的是什么?思想!精通一门编程语言(最好是面向对

2010-07-29 01:22:00 434

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除