windows sdk编程系列文章09 ---- 对话框

windows sdk编程系列文章09 ---- 对话框

ID:41037396

大小:88.00 KB

页数:24页

时间:2019-08-14

windows sdk编程系列文章09 ---- 对话框_第1页
windows sdk编程系列文章09 ---- 对话框_第2页
windows sdk编程系列文章09 ---- 对话框_第3页
windows sdk编程系列文章09 ---- 对话框_第4页
windows sdk编程系列文章09 ---- 对话框_第5页
资源描述:

《windows sdk编程系列文章09 ---- 对话框》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、windowssdk编程系列文章----对话框2008-04-1022:34现在我们开始学习一些有关GUI编程的有趣的部分,即:以对话框为主要界面的应用程序。我们将分两课来讲述这一过程。理论:如果您仔细关注过前一个程序就会发现:您无法按TAB键从一个子窗口控件跳到另一个子窗口控件,要想转移的话只有用鼠标一下一下地去点击。对用户来说这是不友好的。另一件事是如果您象前一课中那样把主窗口的背景色从白色改成灰色,为了子窗口控件无缝地作相应地改变,您必须细分类所有子窗口。造成上述诸多不便的原因是子窗口控件本来是为对话

2、框而设计的,象子窗口控件的背景色是灰色的,而对话框的背景色也是灰色的,这样它们本来就相互协调了,而无须程序员加入其他的处理。在我们深入讨论对话框前我们必须知道何谓对话框。一个对话框其实是有很多的子窗口控件的一个窗口,WINDOWS在对话框内部有一个管理程序,由其来处理象按下TAB键则输入焦点从一个子窗口空间条到另一个子窗口控件、按下ENTER键等于在当前具有输入焦点的子窗口控件上点击了鼠标等等这些杂事,这样程序员就可以集中精力于他们的逻辑事务了。对话框主要用作输入输出接口,人们无须知道它们内部的工作原理,而

3、只要知道如何和他们进行交互就可以了。这也是面向对象设计中的所谓信息隐藏。只要这个黑盒子中的实现足够完美,我们就可以放心地使用,当然我们必须强调的是“黑盒子”必须完美。WIN32API内部的实现即是一个“黑盒子”。噢,好象我们的讨论有些走题,现在让我们回到正题来,对话框的设计是为了减少程序员的工作量的,一般您如果在窗口中自己放一个子窗口控件您就必须自己处理其中的按键逻辑和细分类它的窗口过程。如果您把它放到对话框中,则这些杂事对话框会自己处理,您只要知道如何获得用户输入的数据和如何把数据放入到子窗口控件中去就可

4、以了。在程序中对话框和菜单一样被定义成一种资源,您可以在脚本文件中写一个对话框模板,其中包含该对话框和子窗口的特性,然后用资源编辑器编辑。需要注意的是所有的资源必须放在同一个脚本文件中。虽然可以用文本编辑器去编辑脚本文件,但是象要调整子窗口控件位置时要涉及到一些坐标值时最好还是用一些可视化的编辑器,这样方便多了。一般在编译器的开发包中都会带资源编辑器,您可以用它们来产生一个模板然后增删一些子窗口控件。有两种主要的对话框:模式对话框和无模式对话框。无模式对话框允许您把输入焦点切换到(同一个应用程序的)另一个窗

5、口,而该对话框无须关闭。比如MSWORD中的FIND对话框。模式对话框又有两类:应用程序模式对话框和系统对话框。应用程序对话框不允许您在本应用程序中切换输入焦点,但是可以切换到其它的应用程序中去,而系统对话框则必须您对该对话框做出响应否则不能切换到任何的应用程序中去。要创建一个无模式对话框调用API函数CreateDialogParam,而创建一个模式对话框则调用API函数DialogBoxParam。其中应用程序模式对话框和系统模式对话框之间的差别是style参数不同,要想创建一个系统模式对话框该参数必须

6、“或”上DS_SYSMODAL标志位。在对话框中若要和子窗口控件通讯则调用函数SendDlgItemMesage。该函数的语法如下:LRESULTSendDlgItemMessage(         HWNDhDlg,    intnIDDlgItem,    UINTMsg,    WPARAMwParam,    LPARAMlParam);该API函数对于用在向子窗口控件发送方面是非常有用的。譬如:如果您想得到编辑控件中的字符串可以这么做:SendDlgItemMessage(hDlg,ID_EDI

7、TBOX,WM_GETTEXT,256,text_buffer);具体要发送那些消息应当查询有关的WIN32API参考手册。WINDOWS还提供几个快速存取控件数据的函数。譬如:GetDlgItemText、CheckDlgButton等。这样一来,您就可以不用去查询每个消息的wParam和lParam参数获得相关信息了。您应尽可能地使用这些API函数,这样使得您的代码将来比较容易维护。对话框的管理函数会把一些消息发送给一个特定的回调函数:对话框过程处理函数,该函数的格式为:INT_PTRCALLBACKD

8、ialogProc(     HWNDhwndDlg,    UINTuMsg,    WPARAMwParam,    LPARAMlParam);该函数的格式非常类似于窗口的过程函数,除了返回值是TURE和FALSE,而不是HRESULT,存在于WINDOWS内部的对话框管理器才是对话框真正的窗口过程函数。它会把某些消息传递给我们的窗口过程函数。所以当我们的窗口过程函数处理这些消息时就返回TTRUE,否则就返

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。