浏览器大全:是一个提供流行浏览器教程、在线学习分享的学习平台!

用VC制作动态弹出的对话框

作者:周鸣扬

  在“网络蚂蚁”中,如果在下载过程中有错误发生,或是提示下载完成时,你都可以在屏幕中央看到一个由小变大、动态弹出的对话框,那么,这个动态弹出的对话框是如何实现的呢?

  一、选择方法
  通常,我们可以在对话框的WM_INITDIALOG事件的响应函数中加入对话框的一些初始化设置,比如改变窗口的位置及大小。同样,我们也可以在WM_INITDIALOG事件的响应函数中让对话框由小到大地显示。但是,如何改变对话框的大小呢?在编程过程中,我们通常是利用MoveWindow函数来动态调整对话框的大小,但是MoveWindow函数有其局限性:一是它的速度较慢;二是由于众所周知的MFC内存泄漏的原因,如果重复调用MoveWindow函数来改变对话框的大小,MoveWindow不能够将屏幕清“干净”(这点你可以在实际编程中试一下),这显然不是我们所需要的。能不能找到一种其他的方法来快速地改变窗口大小呢?我们知道,用SetWindowRgn函数能够改变窗口的显示区域,那么,在对话框显示之前,让程序将对话框先隐藏起来,然后让对话框的显示区域不断变大,这样就实现了对话框的动态显示。

  在继续介绍之前,我们先来介绍一下SetWindowRgn的具体用法,以下是其调用格式:

  int SetWindowRgn( HRGN hRgn, BOOL bRedraw );

  hRgn:指向一区域的句柄,通常该参数是由CRgn对象创建的。

  bRedraw:指明在设定窗口显示区域之后系统是否进行窗口重绘操作。

  二、应用实例
  接下来我们以让程序的“帮助对话框”动态弹出为例,介绍如何通过编程的方式来实现对话框的动态弹出显示。在CAboutDlg类中加入对WM_INITDIALOG的映射,并编辑其响应函数OnInitDialog,该函数的具体内容设置如下:

  BOOL CAboutDlg::OnInitDialog()

  {

   CDialog::OnInitDialog();

   //隐藏对话框

   ShowWindow(SW_HIDE);

   CRect dlgRect;

   GetClientRect(&&dlgRect);

   CPoint centerPoint;

   centerPoint.x=dlgRect.Width()/2;

   centerPoint.y=dlgRect.Height()/2;

   //得到对话框的中点坐标

   CRgn testrgn;

   this-〉ShowWindow(SW_HIDE);

   int m=GetSystemMetrics(SM_CYSIZEFRAME);

   //以下代码实现对话框的动态弹出

   for (int i=10;i〈dlgRect.Width()/2+2m;i+=1)

   {

  testrgn.CreateRectRgn(centerPoint.x-i,centerPoint.y-i,centerPoint.x+i,centerPoint.y+i);

   SetWindowRgn((HRGN) testrgn,TRUE);

   ShowWindow(SW_SHOW);

   CenterWindow();

   testrgn.DeleteObject();

   }

   return TRUE;

  }

  该程序的代码比较简单,编译之后进入程序的帮助选单,你会看见一个由小变大的对话框跃然于屏幕之上。

  三、深入讨论
  需要说明的是,本文中主要的目的是介绍编程思路,所以在编程中是首先假定了帮助对话框是正方形或基本上是正方形的,如果你的帮助对话框的形状长宽比例较大,该程序在运行时的界面效果会不太理想。这时,你可以在编程中考虑按对话框的长宽比例来动态创建其他形状的显示区域。

相关软件

2345加速浏览器官方版

2345加速浏览器官方版 | 56.2MB

2345加速浏览器官方版

新一代2345加速浏览器采用Chromium和IE双内核,主打极速与安全特性。基于Chromium深度定制,引入网页智能预加载技术,访问网页更快速..

QQ浏览器官方正式版

QQ浏览器官方正式版 | 49.67MB

QQ浏览器官方正式版

QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同,交互和视觉表现也重新设计,采用Chromium内核+IE双内核,让浏览快速稳定...

百度浏览器最新版下载

百度浏览器最新版下载 | 13.3MB

百度浏览器最新版下载

q百度浏览器,是一款简洁轻快、智能懂你的浏览器。依靠百度强大的搜索平台,在满足用户浏览网页的基础上,它整合百度体系业务优势,带给用户更方便的浏览方式功能...

UC浏览器官方正式版

UC浏览器官方正式版 | 44.2MB

UC浏览器官方正式版

UC浏览器(UC Browser)是UC Mobile Limited在2004年8月开发的一款软件,分uc手机浏览器和uc浏览器电脑版。UC浏览器是全球使用量最大的第三方手机浏览器...

猎豹浏览器2022最新版下载

猎豹浏览器2022下载 | 45MB

猎豹浏览器2022最新版下载

猎豹安全浏览器对Chrome的Webkit内核进行了超过100项的技术优化,访问网页速度更快。其具有首创的智能切换引擎,动态选择内核匹配不同网页...

360安全浏览器官方版下载

360安全浏览器下载 | 21.4MB

360安全浏览器官方版下载

360安全浏览器拥有全国最大的恶意网址库,采用恶意网址拦截技术,可自动拦截挂马、欺诈、网银仿冒等恶意网址。独创沙箱技术,在隔离模式即使访问****也不会感染...