自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 虚拟机中Solaris 10和主机之间建立共享文件夹(好不容易弄出来的,记录一下以免以后忘了vv)

<br />1.首先在虚拟机中启动Solaris 10<br /> <br />2.从虚拟机中出来ctrl+alt,选择虚拟机菜单->选择安装 Vmware Tools,然后进入虚拟机中,等一下,会自动弹出一个窗口里面有一个文件叫<br />   vmware-solaris-tools.tar.gz<br /> <br />3.将这个文件copy到/tmp下<br />   cp /cdrom/vmwaretools/vmware-solaris-tools.tar.gz  /tmp<br /> <br

2010-11-16 21:32:00 3083 3

原创 string 的用法总结

string   str;1.修改符:   append:    str.append(strDest);//将strDest附加在str的结尾   str.append(strDest, n);//将strDest的前那个字符附加在str的结尾   str.append(n, ch);//在str的结尾重复添加n个字符ch  insert: str.insert(pos, strDest, n)

2007-12-01 19:52:00 694 2

原创 派生类与基类之间的对象模型

先看一段代码: class CAnimal...{public:    CAnimal( )    ...{        age = 1;        num = 0;    }    CAnimal(int ag, int nu)    ...{        age = ag;        num = nu;    }    int age;    int num;};class

2007-10-29 10:01:00 2378

原创 对引用的认识

首先引用本身是占存储空间的,引用存储的就是所引用对象的地址 比如   int   a=5; int&   b=a; int&   c=b; 因此 引用 b 和 c 存储的都是变量 a 的地址,但是 通过 &b 或 &c 是无法取到引用 b 和 c 本身的地址的 取到的是变量 a 的地址,这就是为什么说引用比指针更安全!!因为无法取到引用 b 和 c 的地址意味着你就 无法改变引用 b 

2007-10-28 20:58:00 1454

原创 -1在计算机中的存储

int a = -1; 在内存中的存储状态为:(0x0012FF70为 a 的地址) 0x0012FF70:FF FF FF FF unsigned int b = 4294967295;四字节最大整数 在内存中的存储状态为:(0x0012FF6C为 b 的地址) 0x0012FF6C:FF FF FF FF 可见-1 和 4294967295 在内存中都以 FF FF FF FF表示

2007-10-28 16:26:00 3185

原创 对指针的认识-------------------------指针的复杂声明

 在前两篇文章都理解的基础上,本篇文章将教你如何去理解指针的复杂声明。首先先介绍一下 左右法则:其实就是------向右看,向左看首先找到变量名,然后向右看,遇到括号改变阅读方向,重复这个过程,直到解析完整个表达式。看到上面的法则,如果没有接触过这个法则,可能会不知所云。下面就通过一些具体的例子来教你如何理解复杂的指针声明:第一个:int  (*p)[3];1-----首先找到变量名 p ,从变量

2007-10-28 11:44:00 1419

转载 对const的认识

1、什么是const?常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const?  const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用?(1)可以定义const常量,具有不可变性。例如:const int Max=100;int Array[

2007-10-26 20:09:00 1344

原创 对静态变量和全局变量的认识

先看一小段程序:#includeiostream>using namespace std;int nG = 1;void Fun( )...{    static gg = 2;    int local  = gg;}int main( )...{                                      ----------------1    static int a

2007-10-23 10:11:00 3283 4

原创 对C++析构函数的认识

    我们通常认为调用了析构函数以后对象就被销毁了。(我所指的销毁是对象对应的内存块。)    对象在调用了析构函数以后真的被销毁了吗  ?   看一个例子:  #includeiostream>using namespace std;class A...{public:    A( )    ...{        cout"构造函数调用"endl;//调试时没有这一句       

2007-10-22 22:16:00 3243 4

原创 对C++构造函数的认识

       学C++已经有一段时间了,但是对一些东西的理解任然停留在书本上,没有更深刻的认识。比如如题。      曾有人问过我构造函数的作用是干什么的?回答很简单:“用来构造对象的”。于是满脑子就形成了这样一种认识:一个对象只有在调用了构造函数以后,它所对应的内存块才有效。此思想存在了相当长的时间,可以说直到写这篇文章前夕。我们在写构造函数时,如果构造函数形参和类成员变量同名,我们会用this

2007-10-22 20:58:00 1480

转载 VC++编译选项

Visual C++ 编译器选项按字母顺序列出的编译器选项 选项 目的 @ 指定响应文件 /? 列出编译器选项

2007-10-09 18:51:00 1697

原创 为什么有时候程序在到达全局theApp时会先进入CWinApp呢???

工程名:Test按照一般的理解,加点调试时程序首先应该进入全局对象CTestApp  theApp。但有时候我们却发现程序首先进入的是CWinApp(。。。),这就让我们很难理解?????进一步调试发现此时 this指向一个叫 _afxOleWinApp的对象。看名子应该是一个全局对象。搜一下进入到了DLLOLE.CPP里,发现它里面的却有一个 _afxOleWinApp对象   CWinApp 

2007-10-03 09:40:00 2283 3

原创 为什么CWinApp构造函数中的this是指向派生类的

以前对这个问题也没有太注意,今天碰到提出就想了想,给出以下解释先看一个很简单的类#includeclass Dog{public:    Dog( )    {        m_age = 1;    }private:    int m_age;};class LoveDog: public Dog{public:    LoveDog( )    {        m_food = 10; 

2007-10-01 16:55:00 2095

转载 结构体大小问题

当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。    首先,至少有一点可以肯定,那就是ANSI C保证结构体中各字段在内存中出现的位置是随它们的声明顺序依次递增的,并且第一个字段的首地址

2007-09-27 16:07:00 2164

原创 C++基础知识

 1------静态全局变量不能被其他文件访问           这样做的好处是当前文件的全局变量不会对其它文件的全局变量造成影响           比如:           当前文件有一个全局变量     static   int    num  =   8;           另一个文件中也有一个全局变量   int   num  ;           当你在当前文件中想用另一个文件

2007-09-27 09:00:00 1232

原创 如何在类中声明数组?

一句不用说,看看下面的代码吧。不信的就试试。#includeiostream>using namespace std;class Dog{public:    Dog():MAX(max)    {}    enum { max = 5 };//关键代码    int food[max];    int MAX;};int main(){    Dog dog;    for( int i

2007-09-24 14:28:00 2572

原创 如何让主对话框启动时弹出一个对话框

比如我们想做一个登录窗口,当主对话框启动时先启动一个登录窗口,只有成功登录才会显示主对话框,否则退出。下面就介绍一个简单的方法:很简单就是利用在弹出主对话框出现之前,先弹出我们的登录窗口。首先添加一个对话框资源,用来作为登录窗口,并关联一个对话框类如CLoginDlg然后在InitInstance中添加如下代码:只是简单地实现,你可以在此基础上扩展功能CLonginDlg* pLogin = ne

2007-09-14 09:41:00 920

原创 使对话框全屏显示

如何使对话框全屏显示呢?我们可以借助于函数SetWindowPos,其原型如下:BOOL SetWindowPos ( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );参数说明:pWndInsertAfter  可以取值如下 wndTop    wndBottom  wndTopMost 

2007-09-13 10:41:00 2118

原创 启动隐藏对话框的简单例子

利用WM_WINDOWPOSCHANGING首先建立一个基于对话框的工程,然后给对话框添加WM_WINDOWPOSCHANGING消息处理函数。给对话框类添加一个成员bVisibe用来决定窗口初始显示时是隐藏还是显示。在构造函数中将其初始化为FALSE即初始隐藏。然后在消息处理函数中添加如下代码即可:void CTestDlg::OnWindowPosChanging(WINDOWPOS FAR*

2007-09-13 09:33:00 757

转载 一个microsoft的.exe程序的启动过程

一个microsoft的.exe程序的启动过程 学习windows 编程从mfc角度来说可分为两部分那就是WinMain函数以前的,和WinMain函数以后的。前者涉及很多windows操作系统内部的知识,后者么看mfc源码就可以了。虽然大多数程序不需要你了解太多关于os加载应用程序这方面的知识,但我认为能较深入了解windows os的运行情况对程序员是很有帮助的。 最近我正在研究一个m

2007-09-11 18:37:00 678

原创 绘制圆形按钮

由于从CButton类派生的按钮外观过于“简洁”,有时并不能满足我们的要求。爱美之心人皆有之,何况按钮呼?那么要如何才能做出一个漂亮的按钮呢?这就得求助与按钮的自绘功能。所谓按钮的自绘,就是按钮的形状可以重新绘制。既然按钮的形状可以重新绘制,那岂不正是 我们需要的。下面简要的说一下圆形按钮的制作思路:首先得让按钮具有自绘风格(ownerdraw),可以在按钮的属性里选上,也可以通过PreSubCl

2007-09-10 10:27:00 1328 6

原创 WM_COMMAND消息路由

下面就谈谈命令消息WM_COMMAND的路由吧,作为一次学习笔记吧下面是从MSDN上copy过来的命令消息路由表:(很详细哦) MDI frame window (CMDIFrameWnd) Active CMDIChildWnd

2007-09-08 10:30:00 1648

原创 OnInitDialog中ShowWindow为什么无效?

最近看到有关对话框启动隐藏的问题, 觉得不就是在OnInitDialog里调用 ShowWindow( SW_HIDE )幸亏想当然了的一段还算不太长的时间(^_^)试了以后发现启动时对话框并没有隐藏,纳闷了?????然后查看了一下MFC的底层代码以后发现,发现对话框的显示路由如下:首先当然就是从InitInstance里的dlg.DoModal()开始啦,DoModal又调用了CWnd:Crea

2007-09-08 08:48:00 4706 1

原创 句柄

所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从 上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样

2007-09-06 10:41:00 558

转载 启动隐藏对话框

 VC 对话框程序运行即隐藏,看起来容易实现,但要完美的解决(很多办法都要闪一下才隐藏),可不是那么容易,要一点小小的技巧。添加成员int IsFirstShow;//可能你需要它开始运行时隐藏,而不是一直隐藏,如果你要它一直隐藏,这里就不要声明了。构造函数里加IsFirstShow=1;响应WM_WINDOWPOSCHANGING消息。添加代码void CSpyRegExeDlg::OnWind

2007-09-05 21:22:00 1166

转载 VC操作光驱

目前有许多的商业软件特别是一些音频、视频播放软件中都带有自动监测光驱的弹出和送入的状态,然后进行自动播放的功能。本文介绍的小软件演示了一种自动识 别光驱弹出和送入状态的能力,并且可以判断出当前的光驱中是否有Windows系统可识别的CDROM碟片。程序实现过程中利用了Windows的 WM_DEVICECHANGE消息和Windows系统广播机制来达到自动监测光驱状态改变的目的。一、实现原理Win

2007-09-04 11:18:00 1411

原创 vc的一些小知识

 1----隐藏任务栏::ShowWindow(::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);2----窗口最大化并覆盖任务栏int   cxScreen   =   ::GetSystemMetrics(SM_CXSCREEN);      int   cyScreen   =   ::GetSystemMetrics(SM_CYSCREEN

2007-09-02 18:49:00 600

原创 CBitmapButton的用法

我们有时希望对应按钮的不同状态,按钮可以有不同的显示形式。比如通常情况下按钮的四种状态正常显示 (Up)     鼠标按下(Down)        获得焦点(Focus)        不可用(Disable)因此可以用四张位图来对应这四种状态,我们不需要为每一种状态单独加载位图,只需要利用CBitmapButton类即可    总共有两种方法实现:下面先说第一种:假如有

2007-09-02 15:55:00 2071 1

转载 c++ 编程命名规则

编程的命名规则,我第一反应就会想到匈牙利命名法。匈牙利命名法我都不想多说,因为网上的文章一大把,大家自己去google搜索。但是为了方便起见,我还是在这里简单的介绍一下:匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是一、先m_(成员变量)或者是g_(全局变量)二、就是指针,通常以p来表示三、然后是简单数据类型四、再是其

2007-09-02 10:58:00 733

原创 鼠标停靠在按钮上和鼠标离开按钮时的触发事件

下面以按钮为例阐述: 首先给对话框类添加一个新类:CNewButton类我们都知道有关鼠标的移动事件通常是WM_MOUSEMOVE,它表示鼠标滑过按钮事件。但有时我们需要知道鼠标停靠在按钮上的事件和鼠标离开按钮上的事件。只有WM_MOUSEMOVE是不能满足我们的要求的。我们需要WM_MOUSEHOVER和WM_MOUSELEAVE事件,这两个消息系统是有定义的。但并不像WM_

2007-09-02 08:32:00 4058 1

原创 用C#打开关闭光驱

 由于是调用API,所以必须导入命名空间using System.Runtime.InteropServices;using System.Text;  [DllImport( "winmm.dll", EntryPoint="mciSendStringA", CharSet=CharSet.Ansi )]         protected static extern int

2007-08-22 20:51:00 840

原创 C#检测当前网络连接状态

 1. 方法定义 [DllImport("wininet.dll")] private extern static bool InternetGetConnectedState( out int connectionDescription, int reservedValue ) ; 2. 方法说明 参数: connectionDescription : 连接说明 reservedValue :

2007-08-22 19:02:00 1051

原创 C#遍历文件

 public static void ListFiles(FileSystemInfo info)        ...{            if(!info.Exists) return;            DirectoryInfo dir=info as DirectoryInfo;            //不是目录            if(dir==null) re

2007-08-22 19:00:00 706 2

转载 C++编程人员容易犯的10个C#错误

我们知道, C#的语法与C++非常相似,实现从C++向C#的转变,其困难不在于语言本身,而在于熟悉.NET的可管理环境和对.NET框架的理解。  尽管C#与C++在语法上的变化是很小的,几乎不会对我们有什么影响,但有些变化却足以使一些粗心的C++编程人员时刻铭记在心。在本篇文章中我们将讨论C++编程人员最容易犯的十个错误。 陷阱1: 没有明确的结束方法 几乎可以完全肯定地说,对

2007-04-01 11:44:00 523

转载 指向类成员

最近我收到许多有关类方法指针的问题,比如:在 VC 中无法使用类方法指针,编译器报如下错误:Cannot convert parameter 2 from long (unsigned long)tolong (__cdecl *)(unsigned long)我该怎么办?下面是解决这个问题的代码://in the headerclass CKernel:{

2007-04-01 10:39:00 544

转载 打造自定义的 AfxMessageBox

 一、需求  与标准的 MessageBox 相比,MFC提供了 AfxMessageBox 的方法是我们对消息框的变得更加容易。然而简单的 AfxMessageBox 有时已经不能够满足我们的需求了:有时候我仅仅想提示用户一下,并不需要用户确认,也就是说过一段时间消息框就能自动关闭。  您可能马上会想到,使用自己定义的对话框来替代程序中的 AfxMessageBox,没错,这样的结果非常能够让你

2007-04-01 10:34:00 942

转载 使用MFC的数组类

 MFC的数组类支持的数组类似于C++中的常规数组,可以存放任何数据类型。C++的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。  MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,CWordA

2007-04-01 10:07:00 1165

原创 CToolTipCtrl的用法(静态地显示工具提示)

下面实现的是当鼠标滑过一个控件时,在控件上显示一个工具提示程序创建的工具提示相对简单,主要用到以下几个函数:BOOL Create( CWnd* pParentWnd, DWORD dwStyle = 0 );BOOL AddTool( CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL, UINT nIDTool = 0 );v

2007-03-31 16:17:00 2167

原创 如何动态创建按钮,并响应消息

   如何让动态创建的按钮响应鼠标双击? 利用按钮的BS_PUSHBUTTON风格,具有该风格的按钮被单击时会发出WM_COMMAND消息,他的响应原理和用类向导定义的函数一样。只不过它的响应函数原形,消息映射以及函数实现需要你自己手动写进去例如:首先建一个AppWizard的工程Button,然后给CButtonDlg添加一个成员变量m_btn如:CButton m_bt

2007-03-31 15:21:00 4273 2

原创 让编辑框动态显示系统时间

 这是一个很简单的程序设计。在你的对话框上放置一个Edit控件,要有一定的长度便于显示。给编辑框关联一个控件变量:CEdit    m_Edit1;在OnInitDialog中添加如下代码:CString strTime; CTime   tm; tm=CTime::GetCurrentTime();//获得系统时间 strTime=tm.Format("%y年%m月%d日   %

2007-03-31 12:28:00 1681 1

虚拟机使用

简要的介绍了虚拟机的使用

2007-07-14

空空如也

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

TA关注的人

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