重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

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

这篇文章主要讲解了“怎么用VC制作动态弹出的对话框”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用VC制作动态弹出的对话框”吧!

创新互联2013年开创至今,先为凤冈等服务建站,凤冈等地企业,进行企业商务咨询服务。为凤冈企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

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

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

}

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

感谢各位的阅读,以上就是“怎么用VC制作动态弹出的对话框”的内容了,经过本文的学习后,相信大家对怎么用VC制作动态弹出的对话框这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


分享标题:怎么用VC制作动态弹出的对话框
网址分享:http://cqcxhl.cn/article/ggigoc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP