 |
白乔原创:VC之美化界面篇
|
|
| |
| 本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:
1. 大致了解MFC框架的基本运作原理;
2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;
3. 熟悉OOP理论和技术;
本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。
1. 美化界面之开题篇
相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:
图1 瑞星杀毒软件的精美界面
程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。
“受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。
2. 美化界面之基础篇
美化界面需要先熟悉Windows下的绘图操作,并明白Windows的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免……
2.1 Windows下的绘图操作
熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。你也可以花点时间画个按钮,画个你自己的 ...
|
|
| 作者:不祥 bluejoe张贴于2004-03-04 15:11:18.0,共阅读39975次,回复23次 |
|
|
 |
学习C/C++的经验谈
|
|
| |
| 工作已经有三年半,算上学校里的时间,大约已有7年的C语言和5年的C++使用经验;熟练使用C/C++也有3年以上;现在的我自认为是可以称得上精通C/C++,基本现在市面上广泛被推崇的经典书籍,如:《C++ Primer》、《高级C++编程技术》、《STL原码剖析》、《Effective C++》、《C编程陷阱》、《Thinking in C++》等等,这些书只有《高级C++编程技术》和《C编程陷阱》在早些时候是通篇看完的(也是因为它们都比较薄),其它的现在基本上都已经不能启发我了,这些书虽然内容各不相同,但针对的读者水平是一样的,应该是已经学会编程语言,能够独立编程但尚未精通,在某些方面存在一定问题或欠缺的人; 对于书籍,我现在的追求又回到了纯理论,基本上是远离编程语言和计算机,比如,小波变换和《Algorithm I-IV》; 言归正传,关于很多人疑问的先学什么后学什么的问题,我认为:如果你选择C++作为最终的工具,或者是以C++为主的,那么我强烈建议你先学习C语言; 首先要说明的是,C和C++是两件截然不同的东西,学习C++可以完全没有C的基础,或者说可以完全不用先学C;但是,这样你是永远也不可能成为真正的C++大师的;你最多只能成为一个C++的熟练工人;C和C++有一个共同的奥义:内存管理,而你不学习C,单从对C++的理解 ...
|
|
| 作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1948次,回复4次 |
|
|
 |
终于搞懂了,预编译头文件(precompiled header)
|
|
| |
| 预编译头文件今天在改一个很大的程序,慢慢看,慢慢改。突然发现一个.c文件,里面什么也没有,
就几个头文件,我一看,我靠,这不是把简单的问题搞复杂了吗,随手删掉那个c文件。
结果不能编译了,我靠:
fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\':
No such file or directory
怎么rebuild all都不行。
上网查了一下,才搞懂了:
----------------总结------
如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么
1。把这些头文件全部写到一个头文件里面去,比如写到preh.h
2。写一个preh.c,里面只一句话:#include "preh.h"
3。对于preh.c,在project setting里面设置creat precompiled headers,对于其他
.c文件,设置use precompiled header file
//
哈哈
我试了一下,效果很明显,不用precompiled header,编译一次我可以去上个厕所,用
precompiled header,编译的时候,我可以站起来伸个懒腰,活动活动就差不多啦
---------转载的 ...
|
|
| 作者:不祥 pyl2001张贴于2004-03-09 19:32:16.0,共阅读21677次,回复8次 |
|
|
 |
清华大学MTK手机设计培训班招生
|
|
| |
| ...清华大学MTK手机设计培训班招生
MTK是目前国内手机应用最多的软件平台,熟悉MTK手机开发的软件工程师严重缺乏,收入不菲。无论是从事手机设计、手机应用软件开发或者手机增值应用,MTK软件工程师都大有用武之地
清华大学移动软件培训中心与多家国际知名手机设计企业合作,使用目前最流行的MTK平台,以一款市面出售的MTK手机为教学案例,由浅入深地讲授手机的开发工具、开发流程以及开发技巧。并且提供开发资料以及工程代码、商用代码及分析,这种深度的培训在国内还没有先例,已有多家公司向我中心预定人才,毕业学员我们负责推荐工作。
我们还特别为手机增值应用开设了速成班,可以在短时间内掌握在MTK手机上进行增值应用开发的技术。
现有标准班和周末速成班招生,速成班4月12日开课,大专以上学历均可参加
billdu@tsinghua-embed.cn
报名热线:010-62789019
详情请看 www.tsinghua-embed.cn
|
|
| 作者:handstar handstar张贴于2008-04-03 13:57:16.0,共阅读364次,回复0次 |
|
|
 |
数组和指针的剖析
|
|
| |
| 数组和指针的剖析
指针到底是什么呢。指针其实可以比作相当于一个寄存器,我们暂且可以这样理解。因为一个寄存器中一般存放的都是一个4字节的内存地址。所以我们的指针同样也是存放的一个内存地址。我们其实在访问指针就是间接的访问内存地址。 转为汇编中相当于 dowrd ptr [指针] 。这样访问的就是指针地址中存储的数据。
很多人说指针和数组时相同的,因为他们认为 例如。
char *string = "hello world";
他们通过string [0] 就可以访问到字符’h’。其实这时存在一个间接的作用。这里我们假设string的内存地址时 00405128。例如这里我们通printf("%c", string[0])。 那么此时程序则会将 dword ptr [string+1] 压入堆栈。 不过因为堆栈一般是通过寄存器操作的所以 mov eax ,dword ptr [string+1] 。因为一般我们汇编中要进行访问内存中的数据的时候,数据地址需要加上 []。 例如 mov eax, 3 和 mov eax, [3] 。显然不同,前者是将立即数3传递到eax寄存器中。后者是将地址3中开始的32位值 传递给eax寄存器。因为一般 ...
|
|
| 作者:xyblack xyblack张贴于2008-03-25 03:41:31.0,共阅读587次,回复0次 |
|
|
 |
白乔原创:实战软件DIY
|
|
| |
| 开发一个属于自己的软件?让流行软件的包装打上你的名字?也许这是最令你感到振奋的事情了。然而,这并不是很容易做到的事情。如何从一个好的思路出发,到软件的最终出品,个中艰辛足以让你感到迷茫……本文将围绕笔者自行开发的免费软件《FlashNow!动画浏览器》的具体开发过程,循序渐进,深入浅出,向读者朋友简单介绍软件开发的相关知识。
需要指出的是,软件开发是一件很严谨的事情,据说需要完整的系统的软件工程理论知识;对于软件开发,每个人也会有自己钟爱的开发方法和习惯(正如有的人偏爱于用左手写字一样)。本文不想花多大的篇幅讲述令人头疼的软件工程、软件管理的概念,毕竟我们更多的潜在的“开发商”群还基本上就是那些古里古怪的只热衷于物理代码的程序员们,而程序员的特点,很简单,除了激情十足,就是懒散。抽象的概念总会让人头疼,本文所想做到的,就是根据笔者实战的具体过程,向读者朋友们推荐一种实际可行的方法,而绝不是理论。跟着我来,Do It Yourself!我真诚的希望:通过本文,读者朋友能够学到一点真正有用的东西。
0. 前言
开发一个属于自己的软件?让流行软件的包装打上你的名字?也许这是最令你感到振奋的事情了。然而,这并不是很容易做到的事情。如何从一个好的思路出发,到软件的最终出品,个中艰辛足以让你感到迷茫……本文将围绕笔者自行开发的免费软件《FlashNow!动画浏览器》的具体开发过程, ...
|
|
| 作者:不祥 bluejoe张贴于2004-04-25 11:36:21.0,共阅读4231次,回复14次 |
|
|
 |
Visual C++.NET编程讲座之六
|
|
| |
| Visual C++.NET编程讲座之六
第六讲 对话框的功能实现
对话框就好比是一个容器,只有将一些控件添加在这个容器中,才能实现用户与对话框之间的交互。下面我们将前面的对话框设计成如图13所示的界面,其功能是用来让用户调整视图客户区的背景颜色,设置的效果可在下方的矩形框中预览。
图13 设计的"设置"对话框
1. 界面实现的技巧
在图13所示的对话框中所用到的控件有:组框 、静态文本 、编辑框 、旋转控件 和图片控件 。
需要说明的是:
① "静态文本"、"组框"和"图片控件"都属于静态控件,一般不接收用户输入也没有事件映射,其中"组框"控件可以把一些控件人为地划分成一组,使界面更加清晰。"静态文本"和"图片控件"分别用来显示文本内容和图像资源(如图标、位图等)。
② "编辑框"是一个让用户从键盘输入和编辑文本的矩形窗口,用户通过它可以输入各种文本、数字或者口令,也可使用它来编辑和修改简单的文本内容。当编辑框被激活且具有输入焦点时,就会出现一个闪动的插入符,表明当前插入点的位置。
③ "旋转控件"(也称为上下控件)是一对箭头按钮,用户点击它们来增加或减小某个值。一个"旋转控件"通常附着于另一个控件,被附着的控件称为"伙伴窗口"。通常"旋转控件"和"编辑框"一起构成一个用于数字输入的"数字编辑框"。 ...
|
|
| 作者:不祥 qiaoyongbo张贴于2008-02-23 15:11:08.0,共阅读543次,回复0次 |
|
|
 |
Visual C++.NET编程讲座之五
|
|
| |
| ...Visual C++.NET编程讲座之五 对话框的界面世界 摘要 本讲先来讨论对话框界面设计的一般过程和技巧,然后创建对话框类并用模式和无模式的方式来显示对话框。 对话框的界面设计过程 对话框是Windows应用程序中最重要的用户界面元素之一,它是通过对话框上的各种控件来和用户进行交互的。所谓"控件",是指具有一定功能的界面单元,如按钮、编辑框、列表框、组合框等。在这里,我们先来讨论对话框的界面设计过程。 1. 添加对话框资源 (1) 启动Visual Studio .NET,打开上一讲的单文档应用程序项目Viewer。 (2) 打开"项目"菜单,单击"添加资源",弹出"添加资源"对话框,如图1所示。 图1 "添加资源"对话框 (3) 在该对话框中,"导入"按钮是从外部导入一个已有的资源,"自定义"是用来创建一个新的资源类型。在"资源类型"中选定"Dialog",然后单击"新建"按钮。这时"添加资源"对话框消失,回到Visual C++ .NET开发环境。可以看到,系统为对话框资源自动赋给它一个默认的标识名称IDD_DIALOG1,且有两个按钮:"确定"和"取消",在左侧对话框编辑器窗口中,还会自动弹出工具箱窗口。 (4) 单击工具箱窗口上的" ",使工具箱窗口停靠在开发环境的左侧,不再会自动隐藏。 (5) 在对话框的空白处,单击鼠标 ...
|
|
| 作者:不祥 qiaoyongbo张贴于2008-02-23 15:08:02.0,共阅读505次,回复0次 |
|
|
 |
Visual C++.NET编程讲座之三
|
|
| |
| ...第二讲 文档数据的读取和显示
摘要
本讲先来介绍程序各个类的关联机制,然后讨论文档的读过程及读操作,最后讨论文档数据的显示方法和技巧。
程序中各用户类的关联
在上一讲中,我们使用MFC应用程序向导创建一个单文档项目TextViewer。现在,我们打开该项目。可以看出,向导为TextViewer项目创建了以下几个类:
应用程序类CTextViewerApp,应用程序必须的运行入口,在上一讲已经讨论过。
主框架窗口类CMainFrame,用来负责窗口的标题栏、菜单、工具栏及状态栏等界面元素的操作。
文档类CTextViewerDoc,用来负责文档数据的读取和保存
视图类CTextViewerView类,用来显示文档显示,并可响应各种类型的输入(例如键盘输入)以及实现打印和打印预览等。
还有一个对话框类CAboutDlg,用来显示该应用程序的版本信息,是一个"关于"对话框。
需要说明的是,Visual C++ .NET将各个类的声明保存在头文件中,即以.h为扩展名,而将类的实现代码保存在以.cpp为扩展名的实现文件中。
那么,在MFC中上述的主框架窗口类、文档类和视图类的关系是怎样呢?我们来看一下。
将解决方案管理器切换到"类视图",展开CTextViewerApp类的所有节点,双击 ...
|
|
| 作者:Adding qiaoyongbo张贴于2007-12-21 15:30:15.0,共阅读614次,回复1次 |
|
|
 |
使得子控件大小随主窗口大小变化的宏
|
|
| |
|
|
 |
白乔原创:DOS时代-汉字的处理技术(三)
|
|
| |
| 2.使用点阵字库来写字
读者看到上一节的内容,恐怕会产生一种担忧:如果要写出十几个,甚至上百个字,那该需要花多少时间来拼写点阵字模呢?
我们应该感谢那些致力于UCDOS等中文操作系统的开发人员,他们在为我们提供了完美的操作系统的同时还为用户和他们的软件本身提供了属于不同字体而又庞大的汉字库(分别取名为HZK16, HZK16K,HZK16F等等),他们一笔一划地为我们创造了一个又一个行业标准,避免了用户的大量劳动。
这些字库已成为标准字库,只要熟悉其中的结构特点,就不难写出不同的汉字来。首先,标准字库是二进制文件,那些好奇的读者是无法通过文本编辑器来直接观看它是否包含有那么多的0还是1的。利用C语言的fopen()函数时,必须指明打开方式为"rb",这是非常重要的。
其次,标准字库的数据内容是按位存放的,一个字节只存一个0或1是相当浪费的,这样一个16 * 16汉字就会占用265字节!实际上一个字节的每个位都可以用来标志1和0,这样一个16 * 16汉字只占用16*16/8=32个字节。很多初学者朋友在练习中总得莫名其妙地填上一个16点阵字模信息占用32Bytes,就是这个原因。
最后,这些汉字堆砌在一起到底是按什么顺序的呢?这就有必要了解区位码的含义。人们将汉字与一些字符分成94个区(区码1-94),每个区内含有94位(位码1-94),这正如我们开辟了一个word[94 ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-24 21:21:05.0,共阅读5286次,回复2次 |
|
|
 |
白乔原创:VC之控件篇[4]
|
|
| |
| 1 常见控件推荐
FlashPlayer程序至此打造完毕,以下向大家推荐一些比较有用的控件:
1.1 MsChart控件
控件名称:Microsoft Chart Control 6.0 (sp4)
控件类:CMsChart
控件简介:MsChart是微软制作的功能强大的图表工具,用它可以很方便的建立各种图表,包括各种二维、三维的饼图、折线图、直方图、折线图、面积图等。
应用图例:
图40 MsChart控件应用图例
1.2 DataGrid控件
控件名称:Microsoft DataGrid Control 6.0 (sp5)
控件类:CDataGrid
控件简介:DataGrid控件是由微软提供的数据表格控件,需要与ADODC控件配合使用。通过使用DataGrid控件,可以很方便地实现数据表记录的浏览、增加、删除和修改功能。
应用图例:
图41 DataGrid控件应用图例
1.3 MsComm控件
控件名称:Microsoft Communications Control version 6.0
控件类:CMsComm
控件简介:MSComm 控件提供了一系列标准通讯属性和方法,使用它可以建立起应用程序与串行端口的联接。
应用图例:
图42 MsComm控件应用图例
以上画面来源于笔者自行制作的手机通讯软件FreePhone ...
|
|
| 作者:不祥 bluejoe张贴于2004-04-15 23:13:17.0,共阅读12046次,回复5次 |
|
|
 |
在VC中加载GIF动画
|
|
| |
| 在VC中加载GIF动画
有一个CPictureEx类,用于加载GIF动画,不过该类是mfc封装类,对于不使用mfc的c++程序员来讲,不能使用。为了让该类能够让更多的人方便的使用,使其不再被局限于MFC,本人花时间改造了一下这个类,改造后,该类可以应用于任何MFC、 WTL/ATL及其它WINDOWS API编程。
由于原来的CPictureEx是继承于CStatic类,本人改造后,在CPictureEx中直接封装了一个窗口句柄HWND。
假设您在一个弹出式Dialog对话框中加载gif动画,您要做的就是在对话框中放一个控件,可以是BUTTON、STATIC等等。假设您加的这个控件的ID是IDC_FLASH,您的对话框窗口句柄是hDlg,则要使用CPictureEx,将非常简单。详情参见源代码。
PictureEx图片显示类支持以下格式的图片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特别推崇的是可以做出动画,而且轻而易举,确实很COOL。
下面是详细的编程过程:
1. 新建项目:在VC6中用MFC新建一个基于对话框的GifDemo应用程序,接受所有缺省选项即可;
2.在项目中插入文件:把PictureEx.h,PictureEx.cpp文件copy 到项目 ...
|
|
| 作者:Oleg qiaoyongbo张贴于2007-12-20 15:36:17.0,共阅读1192次,回复3次 |
|
|
 |
Visual C++.NET编程讲座之二
|
|
| |
| ...摘要
本讲先来通过一个简单的MFC应用程序来介绍"类"的有关概念,然后分析其运行机制以及基本MFC类层次结构,最后使用项目模板所提供的MFC应用程序向导来创建一个单文档程序TextViewer。
一个简单的MFC应用程序
在现在的"面向对象"程序设计中,我们经常会听说过"类"和"对象"的概念。那么什么是"类"呢?"类"的实质上是一种新的复杂数据类型。说它"新",是因为它不同于C语言中的char、int、float等基本数据类型,说它"复杂",是因为它不仅可以包含各种基本类型的数据,而且还可以包含处理这些数据的函数。
MFC使用"类"来编写Windows应用程序,例如下面的过程:
(1) 单击"开始"页面中的"新建项目",或者打开"文件"菜单中的"新建",选择"项目"命令,都将弹出"新建项目"对话框。
(2) 在左侧的"项目类型"窗格中,选中"Visual C++项目"。在右侧的"模板"窗格中,拖动窗格右侧的滚动条显示其他模板,然后选中"Win32 项目"。
(3) 在"名称"文本框中,输入项目名称"Ex_1_SimpMFC",单击"确定"按钮,弹出"Win32 应用程序向导"对话框。
(4) 单击左侧的"应用程序设置"。选中"应用程序类型"中的"Windows 应用程序",在"附加选项"中选中"空项目",结果 ...
|
|
| 作者:Adding qiaoyongbo张贴于2007-12-21 15:28:39.0,共阅读568次,回复0次 |
|
|
 |
Visual C++.NET编程讲座之一
|
|
| |
| ...Visual C++.NET编程讲座之一
作者:Adding 文章来源:yesky 点击数:5053 更新时间:2006-7-6 19:41:30
前言
本文先来较详细地讨论Visual C++的编程方式,然后讨论其学习方法,最后说明本讲座内容的编排。
Visual C++编程方式
2003年5月22日,微软隆重推出三个企业级的产品:Microsoft Windows Server 2003,Visual Studio.NET 2003和SQL Server 2000 企业版64位。Visual Studio .NET 2003是 Microsoft 的第二代开发工具,用于构建和部署Microsoft .NET 的软件。在这个最新平台上,包括了Visual C++、Visual Basic和Visual C#等开发工具。
Visual C++ .NET包括许多新的特性,如Web应用程序、托管C++扩展、ATL、DCOM、MFC等方面的增强以及ATL Server、Windows .NET Framework的支持等。
尽管如此,Visual C++在Windows桌面应用程序上的编程方法仍可分为两类:一类是非Window编程,如控制台程序(一种与早期DOS相兼容的程序,用来学习基本C++的编程思想),另 ...
|
|
| 作者:不祥 qiaoyongbo张贴于2007-12-21 15:26:32.0,共阅读570次,回复0次 |
|
|
 |
VC无闪烁刷屏技术的实现
|
|
| |
| VC无闪烁刷屏技术的实现
在实现绘图的过程中,显示的图形总是会闪烁,笔者曾经被这个问题折磨了好久,通过向高手请教,搜索资料,问题基本解决,现将文档整理出来以供大家参考.
1.显示的图形为什么会闪烁
我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制的图形进行清除,而又叠加上了新的图形。有的人会说,闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的,其实这样说并不对,绘图的显示速度对闪烁的影响不是根本性的。例如在OnDraw(CDC *pDC)中这样写:
pDC->MoveTo(0,0);
pDC->LineTo(100,100);
这个绘图过程应该是非常简单、非常快了吧,但是拉动窗口变化时还是会看见闪烁。其实从道理上讲,画图的过程越复杂越慢闪烁应该越少,因为绘图用的时间与用背景清除屏幕所花的时间的比例越大人对闪烁的感觉会越不明显。比如:清楚屏幕时间为1s绘图时间也是为1s,这 ...
|
|
| 作者:不祥 qiaoyongbo张贴于2007-12-20 15:25:50.0,共阅读828次,回复1次 |
|
|
 |
C++面向程序设计课程习题详解
|
|
| |
|
|
|
| 作者:原野 killer张贴于2007-11-30 21:19:23.0,共阅读663次,回复1次 |
|
|
 |
白乔原创:艺术编程之C++篇[5]
|
|
| |
| 4 编写快的代码——代码的效率性
程序的效率包括时间和空间上的效率,程序运行速度快,或者占用内存小,那么它的效率就高。
在640K内存时代,空间效率是很讲究的;但时过境迁,现在的内存动辄256M,必要的时候Windows还要动用虚拟内存,将上G的硬盘当着内存使,这样一来,空间效率就没有时间效率显得重要了。
所以,以下的内容只讨论程序的时间效率。
4.1 换机器还是改代码?
让程序跑得更快,要么改代码,要么换机器。程序员以固执著称,肯定选择后者;应用商有的是钱,升级打补丁毕竟要花时间,干嘛那么麻烦?所以他们大抵想都不想,大手一挥,“换一台1.2G的去……”——那么到底该换什么?
程序员的机器通常不是很好的机器(因为穷,或者机器的历史由来已久)。换机器不是程序员所赞成的做法,但对于功能性很强的商用程序,花费钞票购买更快的机器是很有必要的,也很能解决问题。过分地追求算法的效率,改进程序,很有可能带来副作用,如影响程序的兼容性、延误程序的开发进度和推广进度、引入更隐秘的错误等等。
当然,换机器通常是商家的事,而修改代码责无旁贷地是程序员的事。
4.2 衡量程序的时间效率
统计数据总是能更好地说明问题,测试程序的时间效率需要用到精确的时间函数,Windows系统定时器的精度(只能精确到 1 s)是不够的;函数GetTickCount()只能返回到ms级的时间(而且应该是只能 ...
|
|
| 作者:不祥 bluejoe张贴于2004-04-10 12:26:15.0,共阅读3050次,回复2次 |
|
|
 |
深入理解C语言指针的奥秘
|
|
| |
| 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。
先声明几个指针放着做例子:
例一:
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int(*ptr)[3];
(5)int*(*ptr)[4];
指针的类型
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:
(1)int*ptr;//指针的类型是int*
(2)char*ptr;//指针的类型是char*
(3)int**ptr;//指针的类型是int**
(4)int(*ptr)[3];//指针的类型是int(*)[3]
(5)int*(*ptr)[4];//指针的类型是int*(*)[4]
怎么样?找出指针的类型的方法是不是很简单?
指针所指向的类型
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。 ...
|
|
| 作者:不祥 iter张贴于2007-06-13 17:03:44.0,共阅读1674次,回复1次 |
|
|
 |
白乔原创:实战软件DIY[6]
|
|
| |
| 5. 实战成果
实战的成果就一个.exe安装文件,如图1所示。后续的内容就是你如何发布软件,如何销售软件,利用产品来为你赚钱(如果你还想要钱的话)。在知名的网站发布你的软件,或者登记注册你的软件,与感兴趣的商家主动联系也是好办法,好的idea,总会有明智的商家愿意掏钱与你合作。
FlashNow!至此还没有赚取一分钱的利润,FlashNow!1.05.20完全免费,FlashNow!的广告条还是虚席以待——但我仍希望有明智的商家(最好是经营Flash网站的)给我寄来热忱的协议书……
软件商品化是你的事,笔者没有更好的经验。
6. 实战经验
本文到此结尾,有所收获吗?我希望你有。正如我前面所提醒的,软件开发过程是一个严谨完整的过程,各种理论在拼命地解释程序员各个阶段的行为并得出更新更枯燥的规则,各种软件开发工具也因此应运而生,要足够时髦,就必须掌握更多更新的工具。软件开发是学问,本文只尝试以浅显的语言和具体的实例来告诉读者朋友们一种组织软件开发的思路,仅仅如此。
实战结束了,以下的经验是我想带给你的:
² 不要急着编码。编码工作量不应该超过开发工作的百分之二十,成熟的系统设计会事半功倍;
² 不要忽视测试。测试应该至少要占工程的百分之三十,如果你不想做一个不负责任的软件牛仔的话,在经历足够的测试之后,再发布你的软件;
...
|
|
| 作者:不祥 bluejoe张贴于2004-04-25 11:44:39.0,共阅读2993次,回复3次 |
|
|