设为首页 加入收藏

TOP

三、Windows通用对话框—只呼叫一个函数的Windows程序
2012-11-05 12:37:11 】 浏览:655
Tags:Windows 通用 对话 呼叫 一个函数 程序

到现在为止,我们已经说明了两个程序,让您浏览选择颜色,这两个程序分别是第九章中的COLORS1和本章中的COLORS2。现在是讲解COLORS3的时候了,这个程序只有一个Windows函数呼叫。COLORS3的原始码如程序11-7所示。

COLORS3所呼叫的唯一Windows函数是ChooseColor,这也是通用对话框链接库中的函数,它显示如图11-7所示的对话框。颜色选择类似于COLORS1和COLORS2,但是它与使用者交谈互动能力更强。

程序11-7  COLORS3        COLORS3.C        /*-------------------------------------------------------------------------          COLORS3.C -- Version using Common Dialog Box                                                        (c) Charles Petzold, 1998        --------------------------------------------------------------------------*/        #include <windows.h>        #include <commdlg.h>        int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,                                                                 PSTR szCmdLine, int iCmdShow)        {                   static CHOOSECOLOR    cc ;                   static COLORREF                      crCustColors[16] ;                   cc.lStructSize                       = sizeof (CHOOSECOLOR) ;                   cc.hwndOwner                         = NULL ;                   cc.hInstance                         = NULL ;                   cc.rgbResult                         = RGB (0x80, 0x80, 0x80) ;                   cc.lpCustColors                      = crCustColors ;                   cc.Flags                             = CC_RGBINIT | CC_FULLOPEN ;                   cc.lCustData                        = 0 ;                   cc.lpfnHook                          = NULL ;            cc.lpTemplateName = NULL ;                   return ChooseColor (&cc) ;        }

ChooseColor函数使用一个CHOOSECOLOR型态的结构和含有16个DWORD的数组来存放常用颜色,使用者将从对话框中选择这些颜色之一。rgbResult字段可以初始化为一个颜色值,如果Flags字段的CC_RGBINIT旗标被设立,则显示该颜色。通常在使用这个函数时,rgbResult将被设定为使用者选择的颜色。

请注意,Color对话框的hwndOwner字段被设定为NULL。在ChooseColor函数呼叫DialogBox以显示对话框时,DialogBox的第三个参数也被设定为NULL。这是完全合法的,其含义是对话框不为另一个窗口所拥有。对话框的标题将显示在工作列中,而对话框就像一个普通的窗口那样执行。

您也可以在自己程序的对话框中使用这种技巧。使Windows程序只建立对话框,其它事情都在对话框程序中完成,这是可能的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇一个简易画板的实现(Graphics.. 下一篇三、Windows通用对话框—搜寻与替..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目