怎么用VC制作动态弹出的对话框
创始人
2024-12-19 09:31:00
0次

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

  一、选择方法
  通常,我们可以在对话框的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;

  }

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

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...