概述(四)

 在程序Sample.CPP中,有几个函数我们未曾介绍。表1-3给出了这些函数的说明。

  表1-3-1 ShowWindow 函数 用 途    显示或改变给定的窗口
原 型        BOOL ShowWindow(      
  HWND hWnd,    指定一个窗口对象。
  int nCmdShow     指定窗口的显示方式。
);     


返回值    返回该窗口更新前的窗口状态。对先前可见的窗口,其值为非零。对先前隐藏的窗口,其值为零。


  显示方式(nCmdShow)可以是下列常量之一:
类型    说明
SW_HIDE    隐藏该窗口(并是另一个窗口激活)
SW_MINIMIZE    使窗口变成图标(并激活窗口管理表的顶层窗口)
SW_SHOW    激活一个窗口,并根据其当前的尺寸和位置显示该窗口
SW_SHOWMAXIMIZED    激活并以全屏方式显示一个窗口
SW_SHOWMINIMIZED    激活并以图标方式显示一个窗口
SW_SHOWMINNOACTIVE    以图标方式显示一个窗口,当前活动的窗口仍保持活动
SW_SHOWNA    以当前状态显示一个窗口,当前活动的窗口仍保持活动
SW_SHOWNOACTIVE    以最近的大小和位置显示一个窗口,当前活动的窗口仍保持活动
SW_SHOWNORMAL    激活并显示一个窗口,若其为图标或全屏方式显示,则恢复为它的原始大小和位置
SW_RESTORE    同SH_SHOWNORMAL


  表1-3-2 UpdateWindow 函数 用 途    若应用程序的消息队列中存在WM_PAINT消息(绘制用户区消息),则该函数使Windows立即调用窗口函数,向其传递WM_PAINT。否则该函数不作为任何动作。
原 型        VOID UpdateWindow(      
  HWND hWnd,    标识被刷新的窗口的句柄。
);     


返回值    无


  表1-3-3 GetMessage 函数 用 途    从应用程序中的消息队列中检索一条消息。
原 型        BOOL GetMessage(      
  LPMSG lpMsg,    指向MSG类型的变量的远指针,它包含有从应用程序消息队列中检索到的一条消息的数据。
  HWND hWnd,    指定为哪个窗口检索消息,如果hWnd为NULL,则检索调用该函数的应用程序的所有的消息(不检索属于其它应用程序的消息)。
  UINT wMin,     
  UINT wMax    以下两个基本参数指定检索在wMin和wMax范围内的消息。如果这两个参数都为零,该函数检索所有的可用的消息。
);     


返回值    在检索出WM_QUIT消息时,返回零值,在其它情况下返回非零值。


  表1-3-4 DispatchMessage 函数 用 途    将消息发送到指定的窗口对象上(窗口函数被调用)。
原 型        LRESULT DispatchMessage(     
  LPCMSG lpMsg    指向MSG类型变量的远指针,该变量中存储有来自应用程序消息队列中的消息。
);     


返回值    若有一个WM_CHAR消息被放到应用程序的消息队列中,返回非零,否则返回零。该函数不改变lpMsg所指向的变量中存储的消息数据。


  Windows的主函数都是首先以初始化(注册类、创建对象等)这一步开始,而且紧跟着就是消息循环运行这一步。这些步骤对所有的Windows应用程序都大同小异。Windows应用程序主要的不同点在窗口函数的定义上,由于一个应用程序所解决的任务不同,它的窗口函数对消息的处理方式也就不相同,因而每个应用程序需要定义不同的窗口函数。

  LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  {
    switch (message)
    {
      case WM_DESTROY:
        PostQuitMessage(0):
               return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
  }

  这个窗口函数仅处理一条WM_DESTROY消息。这条消息是在用户关闭了屏幕上的窗口时,Windows发送给窗口对象的。该函数对这条消息的处理只是简单地调用Windows函数PostQuitMessage。表1-4给出了函数PostQuitMessage的说明。当主函数的消息循环中的GetMessage函数检索出WM_QUIT消息时,函数GetMessage返回零,这样,消息循环终止,程序也随之被终止。存储消息数据的变量msg的wParam域的值是在调用函数PostQuitMessage时所提供的实参的值。如果程序正常结束,调用PostQuitMessage函数时使用零作为该函数的参数,如果需要表示程序由于出现了异常或错误而必须终止时,使用非零值(一般使用-1)作为该函数的参数。在调用PostQuitMessage使用的参数值被主函数用语句:

  return msg.wParam;

  返回给Windows,供Windows或其它应用程序使用。因此,我们也称PostQuitMessage使用的参数为程序的退出码。

  表1-4 PostQuitMessage 函数 用 途    通知Windows,应用程序希望中止。它一般用于响应WM_DESTROY消息。该函数将消息WM_QUIT消息放入应用程序的消息队列中。
原 型        PostQuitMessage(     
  int nExitCode    指定应用程序的退出代码,它用作WM_QUIT消息的wParam参数。
);     


返回值    无


  小结
  本章首先介绍了图形用户界面的优点和面向对象的程序设计方法。从某种意义上说,Windows是面向对象的,它主要建立在把窗口作为一个对象的概念上。窗口之间通过消息进行消息传递。
  Windows支持直接操作技术。直接操作是对屏幕对象的操作,数据和函数的封装允许该对象自己响应它们接收到的消息。在用户界面上发生的任何事件被作为消息发送给窗口对象。程序员在设计程序时,只须关心一个对象要接受哪些消息和怎样处理这些消息。消息传递工作由Windows负责。因而,使用Windows操作环境可以极大地方便程序开发用户界面的工作,并使程序的结构合理、模块化程序高。更重要的是,支持直接操作技术的Windows支持用户进行有创造性的界面设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值