社区
控件与界面
帖子详情
我想在程序中实现:在当前对话框填一些东西后,点一下OK,那些文字跑到另一个界面去,当前界面消失。
rolt1
2000-09-07 10:02:00
我想在程序中实现:在当前对话框填一些东西后,点一下OK,那些文字跑到另一个界面去,当前界面消失。
VB里我知道,就是Form2.txtUsername.text=...,那在VC中如何办?
...全文
201
8
打赏
收藏
我想在程序中实现:在当前对话框填一些东西后,点一下OK,那些文字跑到另一个界面去,当前界面消失。
我想在程序中实现:在当前对话框填一些东西后,点一下OK,那些文字跑到另一个界面去,当前界面消失。 VB里我知道,就是Form2.txtUsername.text=...,那在VC中如何办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iforever
2000-09-07
打赏
举报
回复
hanphy最可能是你所要的
这也是最最普通的
hanphy
2000-09-07
打赏
举报
回复
用对话框类的对象这个变量来传递参数,当你点击IDOK以后,这个变量并不是马上消失,你可以
利用它进行数据传递。
x_q_y
2000-09-07
打赏
举报
回复
第一种方法:使用Areslee所说的方法 使用SendMessage 向另一个窗口的子控件发送填写
文本消息,至于什么消息,那就看你是什么控件了.发送完毕后,关闭你当前的窗口.
第二种方法.将原窗口中的字符串保存在一个全局变量中,然后关闭这个窗口,并把全局变量中的字符串写到目标窗口中
Areslee
2000-09-07
打赏
举报
回复
用SendMessage把字符串指针传给另一个窗口,在另一窗口取得这个字符串,然后关掉这个窗口。
shines77
2000-09-07
打赏
举报
回复
全局变量通用一点,SendMessage还要保证第二个窗口存在才行,就是必须先打开。
iforever
2000-09-07
打赏
举报
回复
都没分吗
oldworm
2000-09-07
打赏
举报
回复
入门级的问题,不用说了。
hadrons
2000-09-07
打赏
举报
回复
没的说了
windows
程序
设计
WINDOWS环境 Windows几乎不需要介绍。然而人们很容易忘记Windows给办公室和家庭桌上型计算机所带来的重大改变。Windows在其早期曾经走过一段坎坷的道路,征服桌上型计算机市场的前途一度相当渺茫。 Windows简史 在1981年秋天IBM PC推出之后不久,MS-DOS就已经很明显成为PC上的主流操作系统。MS-DOS代表Microsoft Disk Operating System(磁盘操作系统)。MS-DOS是
一个
小型的操作系统。MS-DOS提供给用户一种命令列接口,提供如DIR和TYPE的命令,也可以将应用
程序
加载内存执行。对于应用
程序
写作者,它提供了一组函数呼叫,进行文件的输入输出(I/O )。对于其它的外围处理-尤其是将
文字
或图形写到显示器上-应用
程序
可以直接存取PC的硬件。 由于内存和硬件的限制,成熟的图形环境缓慢地才到来。当苹果计算机公司不幸的Lisa计算机在1983年1月发表时,它提供了不同于
文字
模式环境的另一种选择,并在1984年1月成为Macintosh上图形环境的一种标准。尽管Macintosh的市场占有率在下降,但是它仍然被认为是衡量所有其它图形环境的标准。包括Macintosh和Windows的所有图形环境,其实都要归功于Xerox Palo Alto Research Center(PARC)在70年代
中
期所作的开拓性研究工作。 Windows是由微软在1983年11月(在Lisa之后,Macintosh之前)宣布,并在两年后(1985年11月)发行。在此后的两年
中
,紧随着Microsoft Windows早期版本1.0之后,又推出了几种改进版本,以支持国际商业市场,并提供新型视讯显示器和打印机的驱动
程序
。 Windows版本2.0是在1987年11月正式在市场上推出的。该版本对使用者接口做了一些改进。这些改进
中
最有效的是使用了可重迭式窗口,而Windows 1.0
中
使用的是并排式窗口。Windows 2.0还增强了键盘和鼠标接口,特别是加入了菜单和
对话框
。 至此,Windows还只要求Intel 8086或者8088等级的微处理器,以「实际模式」执行,只能存取地址在1MB以下的内存。Windows/386(在Windows 2.0之后不久发行的)使用Intel 386微处理器的「虚拟8086」模式,
实现
将直接存取硬件的多个MS-DOS
程序
窗口化和多任务化。为了统一起见,Windows版本2.1被更名为Windows/286。 Windows 3.0是在1990年5月22日发表的。它将Windows/286和Windows/386结合到同一种产品
中
。Windows 3.0有了
一个
很大的改变,这就是对Intel的286、386和486微处理器保护模式的支持。这能使Windows和Windows应用
程序
能存取高达16MB的内存。Windows用于执行
程序
和维护文件的「外壳」
程序
得到了全面的改进。Windows 3.0是第
一个
在家用和办公室市场上取得立足
点
的版本。 任何Windows的历史介绍都必须包括一些OS/2的说明,OS/2是对DOS和Windows的另一种选择,最初是由Microsoft和IBM合作开发的。OS/2版本1.0(只有
文字
模式)在Intel 286(或者后来的)微处理器上运行,在1987年末发布。在1988年10月的OS/2版本1.1
中
出现了管理图形使用者接口的PM(Presentation Manager)。PM最初的设计构
想
是成为Windows的一种保护模式版本,但是图形API改变程度太大,致使软件生产厂商很难提供对这两种平台的支持。 到1990年9月,IBM和Microsoft之间的冲突达到了高峰,导致这两个公司最后分道扬镳。IBM接管了OS/2,而Microsoft明确表示Windows将是他们操作系统策略的
中
心。虽然OS/2仍然拥有一些狂热的崇拜者,但是它远不及Windows这样的普及程度。 Microsoft Windows版本3.1是1992年4月发布的,其
中
包括的几个重要特性是TrueType字体技术(给Windows带来可缩放的轮廓字体)、多媒体(声音和音乐)、对象连结和嵌入(OLE:Object Linking and Embedding)和通用
对话框
。跟OS/2一样,Windows 3.1只能在保护模式下运作,并且要求至少配置了1MB内存的286或386处理器。 在1993年7月发表的Windows NT是第
一个
支持Intel 386、486和Pentium微处理器32位保护模式的Windows版本。Windows NT提供32位平坦寻址,并使用32位的指令集。(本章后面我会谈到一些寻址空间的问题)。Windows NT还可以移植到非Intel处理器上,并在几种使用RISC芯片的工作站上执行。 Windows 95是在1995年8月发布的。和Windows NT一样,Windows 95也支持Intel 386或更高等级处理器的32位保护模式。虽然它缺少Windows NT
中
的某些功能,诸如高安全性和对RISC机器的可移植性等,但是Windows 95具有需要较少硬件资源的优
点
。 Windows 98在1998年6月发布,具有许多加强功能,包括执行效能的提高、更好的硬件支持以及与因特网和全球信息网(WWW)更紧密的结合。 Windows方面 Windows 98和Windows NT都是支持32位优先权式多任务(preemptive multitasking)及多线程的图形操作系统。Windows拥有图形使用者接口(GUI ),这种使用者
界面
也称作「可视化接口」或「图形窗口环境」。有关GUI的概念可追溯至70年代
中
期,在Alto和Star等机器上以及SmallTalk等环境
中
由Xerox PARC所作的研究工作。该项研究的成果后来被Apple Computer和Microsoft引入主流并流行起来。虽然有一些争议,但现在已非常清楚,GUI是(Microsoft的Charles Simonyi的说法)
一个
在个人计算机工业史上集各方面技术大成于一体的最重要产物。 所有GUI都在
点
矩阵对应的视讯显示器上处理图形。图形提供了使用屏幕的最佳方式、传递信息的可视化丰富多彩环境,以及能够WYSIWYG(what you see is what you get:所见即所得)的图形视讯显示和为书面文件准备好格式化
文字
输出内容。 在早期,视讯显示器仅用于响应使用者通过键盘输入的
文字
。在图形使用者接口
中
,视讯显示器自身成为使用者输入的
一个
来源。视讯显示器以图标和输入设备(例如按钮和滚动条)的形式显示多种图形对象。使用者可以使用键盘(或者更直接地使用鼠标等指向设备)直接在屏幕上操纵这些对象,拖动图形对象、按下鼠标按钮以及滚动滚动条。 因此,使用者与
程序
的交流变得更为亲密。这不再是一种从键盘到
程序
,再到视讯显示器的单向信息流动,使用者已经能够与显示器上的对象直接交互作用了。 使用者不再需要花费长时间学习如何使用计算机或掌握新
程序
了。Windows让这一切成真,因为所有应用
程序
都有相同的基本外观和感觉。
程序
占据
一个
窗口-屏幕上的一块矩形区域。每个窗口由
一个
标题列标识。大多数
程序
功能由
程序
的菜单开始。用户可使用滚动条观察那些无法在
一个
屏幕
中
装下的信息。某些菜单项目触发
对话框
,用户可在其
中
输入额外的信息。几乎在每个大的Windows
程序
中
都有
一个
用于开启文件的特殊
对话框
。该
对话框
在所有这些Windows
程序
中
看起来都一样(或接近相同),而且几乎总是从同一菜单选项
中
启动。 一旦您了解使用
一个
Windows
程序
的方法,您就非常容易学习其它的Windows
程序
。菜单和
对话框
允许用户试验
一个
新
程序
并探究它的功能。大多数Windows
程序
同时具有键盘接口和鼠标接口。虽然Windows
程序
的大多数功能可通过键盘控制,但使用鼠标要容易得多。 从
程序
写作者的角度看,一致的使用者接口来自于Windows建构菜单和
对话框
的内置
程序
。所有菜单都有同样的键盘和鼠标接口,因为这项工作是由Windows处理,而不是由应用
程序
处理。 为便于多个
程序
的使用,以及这些
程序
间信息的交换,Windows支持多任务。在同一时刻能有多个Windows
程序
显示并运行。每个
程序
在屏幕上占据
一个
窗口。用户可在屏幕上移动窗口,改变它们的大小,在不同
程序
间切换,并从
一个
程序
向另
一个
程序
传送数据。因为这些窗口看起来有些像桌面上的纸(当然,这是计算机还未占据办公桌之前的年代),Windows有时被称作:
一个
显示多个
程序
的「具象化桌面」。 Windows的早期版本使用一种「非优先权式(non-preemptive)」的多任务系统。这意味着Windows不使用系统定时器将处理时间分配给系统
中
运行的多个应用
程序
,
程序
必须自愿放弃控制以便其它
程序
运行。在Windows NT和Windows 98
中
,多任务是优先权式的,而且
程序
自身可分割成近乎同时执行的多个执行绪。 操作系统不对内存进行管理便无法
实现
多任务。当新
程序
启动、旧
程序
终止时,内存会出现碎裂空间。系统必须能够将闲置的内存空间组织在一起,因此系统必须能够移动内存
中
的
程序
代码和数据块。 即使是在8088微处理器上
跑
的Windows 1.0也能进行这类内存管理。在实际模式限制下,这种能力被认为是软件工程
一个
令人惊讶的成就。在Windows 1.0
中
,PC硬件结构的640KB内存限制,在不要求任何额外内存的情况下被有效地扩展了。但Microsoft并未就此停步:Windows 2.0允许Windows应用
程序
存取扩充内存(EMS);Windows 3.0在保护模式下,允许Windows应用
程序
存取高达16MB的扩展内存。Windows NT和Windows 98通过成熟的32位操作系统及平坦寻址空间,摆脱了这些旧的限制。 Windows上执行的
程序
可共享在称为「动态链接库」的文件
中
的例程。Windows包括
一个
机制,能够在执行时连结使用动态链接库
中
例程的
程序
。Windows自身基本上就是
一个
动态链接库的集合。 Windows是
一个
图形接口,Windows
程序
能够在视讯显示器和打印机上充分利用图形和格式化
文字
。图形接口不仅在外观上更有吸引力,而且还能够让使用者传递高层次的信息。 Windows应用
程序
不能直接存取屏幕和打印机等图形显示设备硬件。相反,Windows提供一种图形
程序
语言(称作图形设备接口,或者GDI),使显示图形和格式化
文字
更容易。Windows虚拟化了显示硬件,使为Windows编写的
程序
可使用任何具有Windows设备驱动
程序
的视频卡或打印机,而
程序
无需确定系统相连的设备类型。 对Windows开发者来说,将与设备无关的图形接口输出到IBM PC上不是件轻松的事。PC的设计是基于开放式架构的原则,鼓励第三方硬件制造商为PC开发接口设备,而且开发了大量这样的设备。虽然出现了多种标准,PC上的传统MS-DOS
程序
仍不得不各自支持许多不同的硬设备。这对MS-DOS字处理软件来说非常普遍,它们连同1到2张有许多小文件的磁盘一同销售,每个文件支持一种特定的打印机。Windows
程序
不要求每个应用
程序
都自行开发这些驱动
程序
,因为这种支持是Windows的一部分。 动态链接 Windows运作机制的核心是
一个
称作「动态链接」的概念。Windows提供了应用
程序
丰富的可呼叫函数,大多数用于实作其使用者接口和在视讯显示器上显示
文字
和图形。这些函数采用动态链接库(Dynamic Linking Library,DLL)的方式撰写。这些动态链接库是些具有.DLL或者有时是.EXE扩展名的文件,在Windows 98
中
通常位于\WINDOWS\SYSTEM子目录
中
,在Windows NT
中
通常位于\WINNT\SYSTEM和\WINNT\SYSTEM32子目录
中
。 在早期,Windows的主要部分仅通过三个动态链接库实作。这代表了Windows的三个主要子系统,它们被称作Kernel、User和GDI。当子系统的数目在Windows最近版本
中
增多时,大多数典型的Windows
程序
产生的函数呼叫仍对应到这三个模块之一。Kernel(日前由16位的KRNL386.EXE和32位的KERNEL32.DLL
实现
)处理所有在传统上由操作系统核心处理的事务-内存管理、文件I/O和多任务管理。User(由16位的USER.EXE和32位的USER32.DLL实作)指使用者接口,实作所有窗口运作机制。GDI(由16位的GDI.EXE和32位的GDI32.DLL实作)是
一个
图形设备接口,允许
程序
在屏幕和打印机上显示
文字
和图形。 Windows 98支持应用
程序
可使用的上千种函数呼叫。每个函数都有
一个
描述名称,例如CreateWindow。该函数(如您所猜
想
的)为
程序
建立新窗口。所有应用
程序
可以使用的Windows函数都在表头文件里预先声明过。 在Windows
程序
中
,使用Windows函数的方式通常与使用如strlen等C语言链接库函数的方式相同。主要的区别在于C语言链接库函数的机械码连结到您的
程序
代码
中
,而Windows函数的
程序
代码在您
程序
执行文件外的DLL
中
。 当您执行Windows
程序
时,它通过
一个
称作「动态链接」的过程与Windows相接。
一个
Windows的.EXE文件
中
有使用到的不同动态链接库的参考数据,所使用的函数即在那些动态链接库
中
。当Windows
程序
被加载到内存
中
时,
程序
中
的呼叫被指向DLL函数的入口。如果该DLL不在内存
中
,就把它加载到内存
中
。 当您连结Windows
程序
以产生
一个
可执行文件时,您必须连结
程序
开发环境提供的特定「引用链接库(import library)」。这些引用链接库包含了动态链接库名称和所有Windows函数呼叫的引用信息。连结
程序
使用该信息在.EXE文件
中
建立
一个
表格,在加载
程序
时,Windows使用它将呼叫转换为Windows函数。 WINDOWS
程序
设计选项 为说明Windows
程序
设计的多种技术,本书提供了许多范例
程序
。这些
程序
使用C语言撰写并原原本本的使用Windows API来开发
程序
。我将这种方法称作「古典」Windows
程序
设计。这是我们在1985年为Windows 1.0写
程序
的方法,它今天仍是写作Windows
程序
的有效方法。 API和内存模式 对于
程序
写作者来说,操作系统是由本身的API定义的。API包含了所有应用
程序
能够使用的操作系统函数呼叫,同时包含了相关的数据型态和结构。在Windows
中
,API还意味着
一个
特殊的
程序
架构,我们将在每章的开头进行研究。 一般而言,Windows API自Windows 1.0以来一直保持一致,没什么重大改变。具有Windows 98
程序
写作经验的Windows
程序
写作者会对Windows 1.0
程序
的原始码感觉非常熟悉。API改变的一种方式是进行增强。Windows 1.0支持不到450个函数呼叫,现在已有了上千种函数呼叫。 Windows API和它的语法的最大变化来自于从16位架构向32位架构转化的过程
中
。Windows从版本1.0到版本3.1使用16位Intel 8086、8088、和286微处理器上所谓的分段内存模式,由于兼容性的原因,从386开始的32位Intel微处理器也支持该模式。在这种模式下,微处理器缓存器的大小为16位,因此C的int数据型态也是16位宽。在分段内存模式下,内存地址由两个部分组成-
一个
16位段(segment)指针和
一个
16位偏移量(offset)指标。从
程序
写作者的角度看,这非常凌乱并带来了long或far指针(包括段地址和偏移量地址)和short或near指标(包括带有假定段地址的偏移量地址)的区别。 从Windows NT和Windows 95开始,Windows支持使用Intel 386、486和Pentium处理器32位模式下的32位平坦寻址内存模式。C语言的int数据型态也扩展为32位的值。为32位版本Windows编写的
程序
使用简单的平坦线性空间寻址的32位指针值。 用于16位版本Windows的API(Windows 1.0到Windows 3.1)现在称作Win16。用于32位版本Windows的API(Windows 95、Windows 98和所有版本的Windows NT)现在称作Win32。许多函数呼叫在从Win16到Win32的转变
中
保持相同,但有些需要增强。例如,图像坐标
点
由Win16
中
的16位值变为Win32
中
的32位值。此外,某些Win16函数呼叫返回
一个
包含在32位整数值
中
的二维坐标
点
。这在Win32
中
不可能,因此增加的新函数呼叫以不同方式运作。 所有32位版本的Windows都支持Win16 API(以确保和旧有应用
程序
兼容)和Win32 API(以运行新应用
程序
)。非常有趣的是,Windows NT与Windows 95及Windows 98的工作方式不同。在Windows NT
中
,Win16函数呼叫通过
一个
转换层被转化为Win32函数呼叫,然后被操作系统处理。在Windows 95和Windows 98
中
,该操作正相反:Win32函数呼叫通过转换层转换为Win16函数呼叫,再由操作系统处理。 在同一时刻有两个不同的Windows API集(至少名称不同)。Win32s (「s」代表「subset(子集)」)是
一个
API,允许
程序
写作者编写在Windows 3.1上执行的32位应用
程序
。该API仅支持已被Win16支持的32位函数版本。此外,Windows 95 API一度被称作Win32c(「c」代表「compatibility(兼容性)」),但该术语已被抛弃了。 现在,Windows NT和Windows 98都被认为能够支持Win32 API。然而,每个操作系统依然都支持某些不被别的操作系统支持的某些功能特性。因为它们的相同之处是相当可观的,所以有可能编写在两个操作系统下都可执行的
程序
。而且,人们普遍认为这两个产品最终会合而为一。 语言选项 使用C语言和原始的API不是编写Windows 98
程序
的唯一方法。然而,这种方法却提供给您最佳的性能、最强大的功能和在发掘Windows特性方面最大的灵活性。可执行文件相对较小且运行时不要求外部链接库(自然,Windows DLL自身除外)。最重要的是,不管您最终以什么方式开发Windows应用
程序
,熟悉API会使您对Windows内部有更深入的了解。 虽然我认为学习古典的Windows
程序
设计对任何Windows
程序
写作者都是重要的,我没有必要建议使用C和API编写每个Windows应用
程序
。许多
程序
写作者,特别是那些为公司内部开发
程序
或在家编写娱乐
程序
的
程序
写作者喜欢轻松的开发环境,例如Microsoft Visual Basic或者Borland Delphi(它结合了对象导向的Pascal版本)。这些环境使
程序
写作者将精力集
中
于应用
程序
的使用者接口和相关使用者接口对象的
程序
代码上。要学习Visual Basic,您也许需要参考Microsoft Press的一些其它图书,例如Michael Halvorson1996年着的《Learn Visual Basic Now》。 在专业
程序
写作者
中
-特别是那些开发商业应用
程序
的
程序
写作者-Microsoft Visual C++和Microsoft Foundation Class Library(MFC)是近年来流行的选择。MFC在一组C++对象类别
中
封装了许多Windows
程序
设计
中
的琐碎细节。Jeff Prosise的《Programming Windows with MFC,第二版》(Microsoft Press,1999年)提供了MFC
程序
的写作指南。 最近,Internet和World Wide Web的流行大力推广着Sun Microsystems的Java,这是
一个
受C++启发却与微处理器无关的
程序
设计语言,而且结合了可在几个操作系统平台上执行的图形应用
程序
开发工具组。Microsoft Press有一本关于Microsoft J++(Microsoft的Java)开发工具的好书,《Programming Visual J++ 6.0》(1998年),由Stephen R. Davis着。 显然,很难说哪种方法更有利于开发Windows应用
程序
。更主要的是,也许是应用
程序
自身的特性决定了所使用的工具。不管您最后实际上使用什么工具写作
程序
,学习Windows API将使您更深入地了解Windows工作的方式。Windows是
一个
复杂的系统,在API上增加
一个
程序
写作层并未减少它的复杂性,仅仅是掩盖了它,早晚您会碰到它。了解API会给您更好的补救机会。 在原始的Windows API之上的任何软件层都必定将您限制在全部功能的
一个
子集内。您也许发现,例如,使用Visual Basic编写应用
程序
非常理
想
,然而它不允许您做
一个
或两个很简单的基本工作。在这种情况下,您将不得不使用原始的API呼叫。API定义了作为Windows
程序
写作者所需的一切。没有什么方法比直接使用API更万能的了。 MFC尤其问题百出。虽然它大幅简化了某些工作(例如OLE),我却经常发现要让它们按我所
想
的去工作时,会在其它特性(例如Document/View架构)上碰壁。MFC还不是Windows
程序
设计者所追求的灵丹妙药,很少有人认为它是
一个
好的对象导向设计的模型。MFC
程序
写作者从他们使用的对象类别定义如何工作
中
受益颇深,并会发现他们经常参考MFC原始码,搞懂这些原始码是学习Windows API的好处之一。
程序
开发环境 在本书
中
,假定您正使用Microsoft Visual C++ 6.0,标准版、专业版和企业版都可以。经济的标准版足以应付本书
中
的
程序
设计需求。Visual C++ 还是Visual Studio 6.0
中
的一部分。 Microsoft Visual C++ 软件包
中
包括C编译器和其它编译及连结Windows
程序
所需的文件和工具等。它还包括Visual C++ Developer Studio,
一个
可编辑原始码、以交谈方式建立资源(如图标和
对话框
)以及编辑、编译、执行和测试
程序
的环境。 如果您正使用Visual C++ 5.0,则需要为Windows 98和Windows NT 5.0更新表头文件和引用链接库,这些
东西
可从Microsoft的网站上得到。在 http://www.microsoft.com/msdn/,选择「Downloads」,然后选择「 Platform SDK」(软件开发套件),您就能在选择的目录
中
下载和安装更新文件。要让Microsoft Developer Studio浏览这些目录,可以从「Tool」菜单项选择「 Options」然后按下「Directories」标签。 Microsoft网站上的msdn部分代表「Microsoft Developer Network(Microsoft软件开发者网络)」。这是
一个
向
程序
写作者提供了经常更新的CD-ROM的计划,这些CD-ROM
中
包含了
程序
写作者在Windows开发
中
所需的最新
东西
。您也可以订阅MSDN,这样就避免经常得从Microsoft的网站下载文件。 API文件 本书不是Windows API权威的正式文件的替代品。那组文件不再以印刷形式出版,它仅能从CD-ROM或Internet上取得。 当您安装Visual C++ 6.0时,您将得到
一个
包括API文件的在线求助系统。您可通过订阅MSDN或使用Microsoft网站上的在线求助系统更新该文件。连接到 http://www.microsoft.com/msdn/,并选择「MSDN Library Online」。 在Visual C++ 6.0
中
,从「Help」菜单项选择「Contents」项目开启MSDN窗口。API文件按树形结构组织,寻找标有「 Platform SDK」的部分,所有在本书
中
引用的文件都来自于该部分。我将向您介绍如何从「 Platform SDK」开始寻找以斜线分层分门别类的文件的位置。(我知道「Platform SDK」是整个MSDN知识库
中
较为晦涩的部分,但我敢保证那是Windows
程序
设计的基本核心。)例如,对于如何在Windows
程序
中
使用鼠标的文件,您可参考/ Platform SDK / User Interface Services / User Input / Mouse Input。 我在前面提到Windows大致分为Kernel、User和GDI子系统。kernel接口在/ Platform SDK / Windows Base Services
中
,User
界面
函数在 / Platform SDK / User Interface Services
中
,GDI位于 / Platform SDK / Graphics and Multimedia Services / GDI
中
。 编写第
一个
WINDOWS
程序
现在是开始写些
程序
的时候了。为了便于对比,让我们以
一个
非常短的Windows
程序
和
一个
简短的
文字
模式
程序
开始。这会帮助我们找到使用开发环境并感受建立和编译
程序
机制的正确方向。
文字
模式(Character-Mode)模型
程序
写作者们喜爱的一本书是《The C Programming Language》(Prentice Hall,1978年和1988年),由Brian W. Kernighan和Dennis M. Ritchie(亲切地称为K&R)编着。该书的第一章以
一个
显示「hello, world」的C语言
程序
开始。 这里是在《The C Programming Language》第一版第6页
中
出现的
程序
: main () { printf ("hello, world\n") ; } 以前C
程序
写作者在使用printf等C执行期链接库函数时,无需先声明它们。但这是90年代,我们愿意给编译器
一个
在我们的
程序
中
标出错误的机会。这里是在K&R第二版
中
修正的
程序
: #include
main () { printf ("hello, world\n") ; } 该
程序
仍然是那么短。但它可通过编译并执行得很好,但当今许多
程序
写作者更愿意清楚地说明main函数的返回值,在这种情况下ANSI C规定该函数必须返回
一个
值: #include
int main () { printf ("hello, world\n") ; return 0 ; } 我们还可以包括main的参数,把
程序
弄得更长一些,但让我们暂且这样就好了-包括
一个
include声明、
程序
的进入
点
、
一个
对执行期链接库函数的呼叫和
一个
return语句。 同样效果的Windows
程序
Windows关于「hello, world」
程序
的等价
程序
有和
文字
模式版本完全相同的组件。它有
一个
include声明、
一个
程序
进入
点
、
一个
函数呼叫和
一个
return语句。下面便是该
程序
: /*------------------------------------------------------------------ HelloMsg.c -- Displays "Hello, Windows 98!" in a message box (c) Charles Petzold, 1998 --------------------------------------------------------------------*/ #include
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0); return 0 ; } 在剖析该
程序
之前,让我们看
一下
在Visual C++ Developer Studio
中
建立新
程序
的方式。 首先,从File菜单
中
选New。在 New
对话框
中
,单击Projects页面标签,选择 Win32 Application。在Location栏
中
,选择
一个
子目录,在 Project Name栏
中
,输入该项目的名称,此时该名称是HelloMsg,这便是在 Location栏
中
显示的目录的子目录。Create New Workspace复选框应该勾起来,Platforms部分应该显示 Win32,选择
OK
。 将会出现
一个
标题为Win32 Application - Step 1 Of 1的
对话框
,指出要建立
一个
Empty Project,并按下Finish按钮。 从File菜单
中
再次选择New。在 New
对话框
中
,选择Files页面标签,选择 C++ Source File。Add To Project复选框应被选
中
,并应显示HelloMsg。在 File Name栏
中
输入HelloMsg.c,选
中
OK
。 现在您可输入上面所示的HELLOMSG.C文件,您也可以选择Insert菜单和 File As Text选项从本书附带的CD-ROM上复制HELLOMSG.C的内容。 从结构上说,HELLOMSG.C与K&R的「hello,world」
程序
是相同的。表头文件STDIO.H已被WINDOWS.H所代替,进入
点
main被WinMain所代替,而且C语言执行时期链接库函数printf被Windows API函数MessageBox所代替。然而,在
程序
中
有许多新
东西
,包括几个陌生的大写标识符。 让我们从头开始。 表头文件 HELLOMSG.C以
一个
前置处理器指示命令开始,实际上在每个用C编写的Windows
程序
的开头都可看到:
Autoit3辅助工具AuAceBox
AuAceBox 是 Skyfore 开发的一款 Au3 辅助工具:该工具涵盖了大多 数 Au3 编程常用操作,可完美替代官方的 AccAu3Box. 开发语言:AU3、C++、等等,所以文件偏大! 版本特
点
: 1.酷炫 UI,扁平化窗口设计 2.常用操作一键集成,绝对给力; 3.支持用户自定义工具,方便功能扩展,支持展开环境变量 使用帮助: 1.
程序
中
大部分都有气泡提示,根据气泡提示操作即可。 2.配置 AuMFCompiler 1.
程序
默认不自带 AuMFCompiler,如果您需要使用,请根据以下步骤配置: 2.到 Au3.Cc -> AuMFC专区 花200A币下载 AuMFC 3.打开主
程序
AuAceBox.exe 打开 主菜单 -> 扩展功能 -> 配置 AuMFC 编译器 4.根据提示操作,完成后您就可以直接在主
界面
调用 AuMFC 编译器了! 3.创建桌面方式 1.如果您觉得本工具好用的话,可以按以下步骤直接创建快捷方式: 2.打开主
程序
AuAceBox.exe 打开 主菜单 -> 扩展功能 ->
程序
设置 -> 选
中
为 AuAceBox 创建桌面快捷方式 即可! 3.然后桌面上就会跳出快捷方式 "AuAceBox 专业版",
OK
,以后您就可以直接通过快捷方式运行本工具了 4.用户自定义工具 1.AuAceBox v2.1+ 版本提供用户自定义工具功能 2.
点
击 首页大图标 -> 实用工具汇总 -> 用户工具 -> 配置用户工具箱 即可配置工具; 3.工具格式:每行
一个
工具,格式如: 工具名=路径(或URL) 4.自定义工具支持如下环境变量: %APPDIR%:AuAceBox.exe 所在目录 %AU3DIR%:AutoIt3.exe 所在目录 %ScriptFile%:载入 Au3 脚本路径 5.检查更新窗口弹出为何有延时 1.更新先获取网络版本号,更新日志,更新地址 2.再显示更新窗口,所以会有些延迟,具体时间与网络环境有关 6.本
程序
是否开源 1.对不起,本
程序
为闭源
程序
,未来也不打算开源 2.要问原因?1.这个
程序
本来就没什么开源价值 2.伸手党泛滥... AutoIt v3 编程交流学习网 - Au3.Cc 版本更新日志: [2015/3/7 2.1.2.6] 1.修正 取消所有窗口半透明 2.修正 更新窗口若无可用更新自适应为 初始化
程序
3.新增 原生支持托盘功能,适应不同用户需求 4.新增 托盘双击显示、隐藏主窗口 5.新增 托盘显示 内置/用户 工具 6.修正 关于
对话框
标题栏显示
程序
版本号 7.新增 Ctrl+F12 显示隐藏主
界面
8.修正 AuAceBox 更新逻辑 9.新增 AuAceBox 设置
中
心 AuAceManager 10.新增 支持手动限制自动吸附 11.优化 AuAceBox 吸附效率/未知吸附情况 12.修正 新功能增加后对应控件/托盘说明 [2015/3/5 2.1.2.4] 1.新增 检查更新功能 2.新增 AuAceBox 专属浏览器 3.新增 修正 N 多窗口主题 4.新增 无人值守自动更新 功能 5.新增 Au3.Cc 链接支持两种打开方式 6.修正 菜单
文字
以及描述 7.修正 访问网站链接指向 AuAceBox 专属浏览器. 8.修复 2.1 版本
中
的某些 BUG. 9.修正 关于页
文字
说明来自 ReadMe.Txt (如果存在) 10.优化 保证效率下减小附加组件内存及CPU占用率 [2015/3/2 2.1.0.34] 1.删除 Au3 脚本录制工具链接 2.新增 内置实用工具 ,用于放置 AU3 辅助工具,从此本人写的所有 AU3 辅助工具就都会直接嵌入至 AuAceBox ! 3.新增 GUID 生成器; 4.新增 RegExTester 内嵌插件,绝对给力! [2015/3/2 2.1.0.9] 1.调整 根据用户反馈,调整编译栏背景色 2.修正 部分
文字
描述 [2015/3/1 2.1.0.6] 1.调整 调整UI,使其看起来更和谐; 2.修正 AuAceBox.Tool 增加部分工具; [2015/3/1 2.1.0.5] 1.修正 修复1.0版本的 N 多 BUG; 2.修正 完全重写代码,加快
程序
运行速度 3.新增 用户自定义工具功能 4.修正 窗口乱
跑
的问题 5.去除 托盘,用户定义工具集成于图标菜单 6.新增 支持
程序
环境变量(支持系统原有的如%WINDIR%) %AU3DIR% %APPDIR% %ScriptFile%
VC++开发学习三(
对话框
之间的信息传递的方法总结)
以模态
对话框
为例进行不同
对话框
之间的信息传递 这里主要是通过主
对话框
的编辑框,输入信息,然后传递给模态
对话框
的编辑框同时在模态
对话框
取消或者确定时向主
对话框
的编辑框
中
显示信息,几种方法都是这样的例子。 目录 ①、全局变量法: ②、主
对话框
法:AfxGetMainWnd(); ③、父窗口法:GetParent(); ④、成员变量、成员函数法; ①、全局变量法: 在主
对话框
中
进行定义
一个
...
用回车键
实现
MFC
对话框
中
TAB键控件输入焦
点
在控件
中
跳转的效果(转)
用回车键
实现
MFC
对话框
中
TAB键控件输入焦
点
在控件
中
跳转的效果(转) 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://hcq11.blogbus.com/logs/54217707.html 近日在为
一个
数据应用写数据输入
界面
,大量的编辑框要
想
实现
快速的输入就是有设计良好的符合工作流程的TAB键序。相信,不少的人在使用具有大量编辑框的
程序
十. 图形
界面
(GUI)设计11.
对话框
对话框
是为了人机对话过程提供交互模式的工具。应用
程序
通过
对话框
,或给用户提供信息,或从用户获得信息。
对话框
是
一个
临时窗口,可以在其
中
放置用于得到用户输入的控件。在Swing
中
,有两个
对话框
类,它们是JDialog类和JOptionPane类。JDialog类提供构造并管理通用
对话框
;JOptionPane类给一些常见的
对话框
提供许多便于使用的选项,例如,简单的“yes-no”
对话框
等。 JDia...
控件与界面
604
社区成员
12,293
社区内容
发帖
与我相关
我的任务
控件与界面
PowerBuilder 控件与界面
复制链接
扫一扫
分享
社区描述
PowerBuilder 控件与界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章