VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板
VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板

目前位置: VCer资源中心 >>> VCer文章 >>> Windows界面
我来转发一篇文章!>>>


白乔原创: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,共阅读38108次,回复21
Visual C++.NET编程讲座之六
 
Visual C++.NET编程讲座之六   第六讲 对话框的功能实现   对话框就好比是一个容器,只有将一些控件添加在这个容器中,才能实现用户与对话框之间的交互。下面我们将前面的对话框设计成如图13所示的界面,其功能是用来让用户调整视图客户区的背景颜色,设置的效果可在下方的矩形框中预览。 图13 设计的"设置"对话框   1. 界面实现的技巧   在图13所示的对话框中所用到的控件有:组框 、静态文本 、编辑框 、旋转控件 和图片控件 。   需要说明的是:   ① "静态文本"、"组框"和"图片控件"都属于静态控件,一般不接收用户输入也没有事件映射,其中"组框"控件可以把一些控件人为地划分成一组,使界面更加清晰。"静态文本"和"图片控件"分别用来显示文本内容和图像资源(如图标、位图等)。   ② "编辑框"是一个让用户从键盘输入和编辑文本的矩形窗口,用户通过它可以输入各种文本、数字或者口令,也可使用它来编辑和修改简单的文本内容。当编辑框被激活且具有输入焦点时,就会出现一个闪动的插入符,表明当前插入点的位置。   ③ "旋转控件"(也称为上下控件)是一对箭头按钮,用户点击它们来增加或减小某个值。一个"旋转控件"通常附着于另一个控件,被附着的控件称为"伙伴窗口"。通常"旋转控件"和"编辑框"一起构成一个用于数字输入的"数字编辑框"。 ...
作者:不祥 qiaoyongbo张贴于2008-02-23 15:11:08.0,共阅读375次,回复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,共阅读354次,回复0
白乔原创: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,共阅读11590次,回复5
用户界面设计的技巧与技术
 
对大多数人来说,用户界面就是软件本身。所以,掌握用户界面设计的技巧与技术是让软件走向市场的最直观因素。原文来源于http://www.ambysoft.com/userInterfaceDesign.pdf。 对于应用软件来说, 一个基本现实就是: 用户界面是面向用户的。用户需要的是开发者开发的应用软件满足其需求, 并且易于使用。太多的开发者自以为是艺术天才, 他们不去尽力遵循用户界面设计标准, 或花精力使得产品好用; 相反, 他们错误地认为编写更灵巧的代码或是使用一套确实有趣的颜色方案才是重要的事。Constantine(1995) 指出,好的用户界面使得人们不用阅读用户手册或接受培训就能使用应用软件。 界面设计的重要性有这么几个原因: 首先, 用户界面越直观, 就越易用, 越易用就越便宜。因为界面越好, 培训用户就越容易, 降低了培训成本; 界面越出色, 用户就越少求助, 降低了客户支持成本。其次, 界面越出色, 用户就喜欢使用, 增强了开发者工作的满意度。 一、用户界面设计的技巧与技术 本节所包含的用户界面设计技巧将有助于提高面向对象界面的设计。 1 、一致,一致,还是一致。你能做的最重要的事情就是保证用户界面运作的一致性。对于列表框来说,如果双击其中的项,使得某些事件发生,那么双击任何其它列表框中的项,都应该有同样的事件发生。所有窗口按钮的位置要 ...
作者:不祥 bluejoe张贴于2004-04-25 11:05:36.0,共阅读3331次,回复2
Visual C++实现Flash动画播放方案
 
摘要 本文通过在VC中将外部swf格式文件内嵌为VC的内部资源,使其在程序运行过程中从资源动态释放到临时文件,从而实现VC对Flash动画的播放。 引言 Flash动画由于可以很方便地把用户的想象通过动画显现出来,使原本只属于专业制作人员的动画制作变的异乎寻常的快捷、方便。由于Flash制作的动画在层次、内容、表现形式等诸多方面均比较出色,因此在网络上得到迅猛的发展,更有不少厂商用Flash在互联网上做起了广告和产品演示,效果丝毫不比视频的差,而体积则要小的多。Flash不仅在网络上有广泛的应用,在普通的应用程序中也可以借助Flash实现一些VC、Delphi等编程语言所难以实现的特效,比如在一些演示版的程序中完全可以将程序运行前的闪屏用Flash来制作。本文下面将通过对内嵌资源的动态释放来实现VC对Flash动画的播放,并给出了部分实现代码。 内嵌资源的动态释放 Flash动画在此是作为程序的一个模块,虽然也可以以文件的形式作为一个外部资源来使用,但为了避免因外部模块遗失而造成程序的非正常运行,可将由Flash 5.0预先制作好的swf格式的文件以资源的形式打包到应用程序中去,而在程序运行时再将其从资源恢复到文件,使用完毕再通过程序将其从磁盘删除。   在导入资源时由于swf格式文件并非VC的标准资源,所以在导入时需要在"Resource type"栏指定资源类型"SW ...
作者:郎锐 bluejoe张贴于2007-01-23 10:15:49.0,共阅读2207次,回复0
对话框中使用ON_UPDATE_COMMAND_UI更新菜单
 
症状 从命令用户界面处理函数(Command UI handler)改变菜单状态(启用/禁用,选择/取消选 择,更改文字)在由对话框处理时没有正常工作。 void CTestDlg::OnUpdateFileExit(CCmdUI* pCmdUI { pCmdUI->Enable(FALSE); //没有显示为禁用. pCmdUI->SetCheck(TRUE); // 没有文字前显示选定标记. pCmdUI->SetRadio(TRUE); // 没有在文字前显示点. pCmdUI->SetText("Close"); //没有更改菜单文字. } 原因 在下拉菜单显示的时候, WM_INITMENUPOPUP消息被先发送以显示菜单项。MFC CFrameWn d::OnInitMenuPopup 函数遍历菜单项并为每个菜单项调用更新命令处理函数(如果有的 话).菜单的外观被更新以反映它的状态(启用/禁用,选择/取消选择) 更新用户界面机制在基于对话框的应用程序中不能工作,因为CDialog没有OnInitMenuP opup 处理函数,而使用CWnd's 默认处理函数,该函数没有为菜单项调用更新命令处理函 数。 解决 适用下列步骤解决此问题 在消息映射中添加ON_WM ...
作者:不祥 jerry张贴于2004-06-14 12:50:56.0,共阅读3955次,回复0
snoopy每日一译-DLL中的对话框
 
在DLL中包含它自己的资源(例如对话框),好象很简单。但是在我发现如何实现之前,我的头都大了。snoopy每日一译-DLL中的对话框 by:Randy More 2002.10.1 from:codeGuru 翻译:snoopy 在DLL中包含它自己的资源(例如对话框),好象很简单。但是在我发现如何实现之前,我的头都大了。 在DLL的函数中弹出对话框,你必须处理状态以使DLL代码能使用DLL资源: extern __declspec(dllexport) void ShowEditDialog(int &MyData1, int &MyData2) { //确保我们能使用DLL资源 AFX_MANAGE_STATE(AfxGetStaticModuleState()); CMyLocalDialog dlg; dlg.Arg1 = MyData1; //为MyLocalDialog指定本地数据 dlg.Arg2 = MyData2; dlg.DoModal(); MyData1 = dlg.Arg1; //对话框关闭后的数据 MyData2 = dlg.Arg2; } 这有一个来自Johan Nilsson 的升级版。 当应用程序调用这个导出函数时永远不能使用GetLastError()检查发生的错误。这是因为AF ...
作者:不祥 ycr40张贴于2004-05-14 09:23:12.0,共阅读1892次,回复0
如何定制对话框系统菜单
 
系统菜单是每个 Windows 程序的标准特性。通常系统菜单由 Windows 系统来管理,所以我们平时编成时很少去碰它。但是,有的时候,我们确实想定制自己的系统菜单项。 这样就涉及到定制菜单的处理问题,因为 Windows 无法自动处理我们定制的系统菜单。而且,系统菜单的处理方式与常规的菜单处理是不同的。那么我们如何实现定制的系统菜单呢?相信看完本文的介绍,你会得到满意的答案。 本文例子是一个典型的C++/MFC对话框程序,设置了 EX_WM_TOOLWINDOW 扩展式样,因此在标题栏左上角看不到系统菜单图标,但通过 Ctrl+Space 或者在标题栏单击鼠标右键可以调出系统菜单。例子程序对系统菜单进行了定制,在原有菜单基础上添加了两个菜单命令:一个是显示“关于”对话框;另一个是“退出”。之所以要加一个“退出”菜单命令,是因为例子程序改写了对话框原来默认的“关闭”菜单命令行为(Alt-F4),用来隐藏对话框。因此必须加一个程序的“退出”出口。此外,例子程序利用一个第三方的系统托盘处理类,利用系统托盘图标可以显示/隐藏对话框。 下面我们就来看看用 C++/MFC 实现的细节。 添加菜单 首先在资源定义文件 resource.h 中定义菜单项标示,也可以在标准头文件中定义。 菜单项标示必须具有唯一性。其次,Windows 对系统菜单的处理与常规菜单的处理方法是不同 ...
作者:不祥 jerry张贴于2004-05-11 20:41:25.0,共阅读2133次,回复0
在MFC中嵌入Word
 
一、引言 Microsoft Office办公套件以其功能强大、方便实用而被广泛使用。我们可以使用自动化作为Word用以把其功能显露给其他应用的方式,采用这种方式可以尽可能少的占用自动化客户的资源,并且不需要被访问对象的类型信息就可以进行调用。 二、创建工程 以下是创建这个MFC应用程序的步骤: (1)使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名为"Embed_Word" (2)选择单文档视图(SDI)结构,在第3步中需要选中Container,以提供容器支持。 其它都为默认。在ClassView中将产生如下类: 应用类: CEmbed_WordApp in Embed_Word.h and Embed_Word.cpp 框架类: CMainFrame in MainFrm.h and MainFrm.cpp 文档类: CEmbed_WordDoc in Embed_WordDoc.h and Embed_WordDoc.cpp 视图类: CEmbed_WordView in Embed_WordView.h and Embed_WordView.cpp 容器类: CEmbed_WordCntrItem in CntrItem.h and CntrItem.cpp (3)在View菜单中 ...
作者:不祥 Boyben张贴于2004-05-09 10:51:01.0,共阅读2258次,回复0
白乔原创:VC之控件篇
 
本文主要通过大量示例指引读者了解和使用Windows控件以及ActiveX控件。1 前言 1.1 控件之于VC 控件与Visual C++没有直接的关系,控件是Windows操作系统的界面元素,而VC只是一种开发语言。VC可以编写Windows程序,当然也可以编写Windows界面,包括最熟悉的对话框界面。 对话框界面是初学者学习VC的一道门槛,学习复杂的文档/视对于初学者来说是很痛苦的事情。而对话框的优点就在于它的“所见即所得”,设计界面画得有多好看,程序运行界面就有多好看。而如何让你的对话框的界面更丰富一点,那就是控件的事情了。 所以,你,责无旁贷的,要先学好控件的使用;而本次教程,正是指引你如何在VC里实现控件编程。 控件是窗口,是个完成特定功能的小窗口。例如:最熟悉的列表框控件可以让你用来列出你所有女友的名字; 控件放置在对话框里,对话框就成为控件的容器,或曰父窗口;而控件就成为对话框的元素,或曰子窗口。 控件并不总是显示成一个窗口,它可以是隐藏着的,例如:你可以使用定时器控件来控制“神五”的发射,但没必要一定要在发射系统的主界面上土土地画上一只小闹钟。 你用来选择女友名字的列表框是Windows系统标准控件,用来指示大爆竹升天的定时器也是。但Windows系统为你考虑的总会有限,那么就需要一些先行的人(第三方)为你准备一些他们出品的控件,这些符合Windo ...
作者:不祥 bluejoe张贴于2004-04-15 22:59:04.0,共阅读7072次,回复1
白乔原创:VC之控件篇[3]
 
以上部分操纵的都是Windows标准控件,其实在Windows里,你还会常常接触到ActiveX控件,它来源于第三方,而非Windows操作系统。这样的控件一般来说,功能丰富而且使用方便,从而大大简化了程序员的工作。本章节以我们需要使用到的Flash控件为例细作阐述。 1 使用ActiveX控件 以上部分操纵的都是Windows标准控件,其实在Windows里,你还会常常接触到ActiveX控件,它来源于第三方,而非Windows操作系统。这样的控件一般来说,功能丰富而且使用方便,从而大大简化了程序员的工作。本章节以我们需要使用到的Flash控件为例细作阐述。 1.1 控件的注册 不同于Windows标准控件,ActiveX控件需要注册才能使用,ActiveX一般以.OCX或者.DLL文件格式发布,可以使用VC附带的工具来注册某个控件,按照以下步骤: 1. 在VC的Tools菜单下启动ActiveX Control Test Container; 2. 在ActiveX Control Test Container里打开菜单File\Register Controls…; 3. 弹出窗口Register Controls显示系统中已注册的所有ActiveX控件,点击左下角的“Register…”按钮; 4. 选择待注册的控件文件,如:“C:\WINNT\system3 ...
作者:不祥 bluejoe张贴于2004-04-15 23:12:22.0,共阅读7718次,回复0
白乔原创:VC之控件篇[2]
 
1 使用Windows标准控件 1.1 常见控件列表 Windows标准控件即普通控件,撰写此文时,笔者每天面对的Word就带了一脸的控件,当然你肯定也熟悉:字体选择下拉框、工具栏、滚动条、状态栏,如此等等。 常见的Windows标准控件在VC里就有: 图2 控件集窗口 通常这个控件集窗口在你的对话框设计界面的附近总能找到,如果找不到,在VC工具栏的任何空白处点击右键,在弹出菜单的Controls菜单项前面打上勾即可,如图所示: 图3 显示控件集窗口 你也许已经看到了,我们图1所示的FlashPlayer中有3个控件是Windows标准控件,好,我们先系统地学习一下怎么使用这3个控件。 1.2 引入控件 1. 准备对话框 对话框相当于控件的容器,我们当然要先准备一个对话框。好办,直接创建一个基于对话框的工程就是了: 图4 准备对话框Step 1 注意,在Step 2中要确认“3D Controls”和“ActiveX Controls”前面打上勾,如图所示: 图5 准备对话框Step 2 这样你的程序就支持三维控件和我们后面即将使用到的ActiveX控件了。如果去掉了勾,或者你面对的正是你师兄当年准备论文的旧的project,它好像并不支持ActiveX控件,那该怎么办呢(好多VC网友总是带着那张哭丧脸的表情问我这种问题)?没事,在主程序 ...
作者:不祥 bluejoe张贴于2004-04-15 23:05:55.0,共阅读8297次,回复0
Windows程式设计(文字输出函式)
 
Windows程式设计(文字输出函式)TextOut (hdc, xStart, yStart, pString, iCount) ; 参数xStart和yStart是逻辑座标上字串的起始点。通常,这是Windows开始绘制的第一个字母的左上角。TextOut需要指向字串的指标和字串的长度,这个函式不能识别以NULL终止的字串。 TextOut函式的xStart和yStart参数的含义可由SetTextAlign函式改变。TA_LEFT、TA_RIGHT和TA_CENTER旗标影响使用xStart在水平方向上定位字串的方式。预设值是TA_LEFT。如果在SetTextAlign函式中指定了TA_RIGHT,则後面的TextOut呼叫会将字串的最後一个字元定位於xStart,如果指定了TA_CENTER,则字串的中心位於xStart。 类似地,TA_TOP、TA_BOTTOM和TA_BASELINE旗标影响字串的垂直位置。TA_TOP是预设值, 它意味著字串的字母顶端位於yStart,使用TA_BOTTOM意味著字串位於yStart之上。可以使用TA_BASELINE定位字串,使基准线位於yStart。基准线是如小写字母p、q、y等字母下部的线。 如果您使用TA_UPDATECP旗标呼叫SetTextAlign,Windows就会忽略TextO ...
作者:不祥 jerry张贴于2004-04-07 21:39:47.0,共阅读2634次,回复0