您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么用VC制作動態(tài)彈出的對話框”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用VC制作動態(tài)彈出的對話框”吧!
在“網絡螞蟻”中,如果在下載過程中有錯誤發(fā)生,或是提示下載完成時,你都可以在屏幕中央看到一個由小變大、動態(tài)彈出的對話框,那么,這個動態(tài)彈出的對話框是如何實現的呢?
一、選擇方法
通常,我們可以在對話框的WM_INITDIALOG事件的響應函數中加入對話框的一些初始化設置,比如改變窗口的位置及大小。同樣,我們也可以在WM_INITDIALOG事件的響應函數中讓對話框由小到大地顯示。但是,如何改變對話框的大小呢?在編程過程中,我們通常是利用MoveWindow函數來動態(tài)調整對話框的大小,但是MoveWindow函數有其局限性:一是它的速度較慢;二是由于眾所周知的MFC內存泄漏的原因,如果重復調用MoveWindow函數來改變對話框的大小,MoveWindow不能夠將屏幕清“干凈”(這點你可以在實際編程中試一下),這顯然不是我們所需要的。能不能找到一種其他的方法來快速地改變窗口大小呢?我們知道,用SetWindowRgn函數能夠改變窗口的顯示區(qū)域,那么,在對話框顯示之前,讓程序將對話框先隱藏起來,然后讓對話框的顯示區(qū)域不斷變大,這樣就實現了對話框的動態(tài)顯示。
在繼續(xù)介紹之前,我們先來介紹一下SetWindowRgn的具體用法,以下是其調用格式:
int SetWindowRgn( HRGN hRgn, BOOL bRedraw );
hRgn:指向一區(qū)域的句柄,通常該參數是由CRgn對象創(chuàng)建的。
bRedraw:指明在設定窗口顯示區(qū)域之后系統是否進行窗口重繪操作。
二、應用實例
接下來我們以讓程序的“幫助對話框”動態(tài)彈出為例,介紹如何通過編程的方式來實現對話框的動態(tài)彈出顯示。在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);
//以下代碼實現對話框的動態(tài)彈出
for (int i=10;i〈dlgRect.Width()/2+2m;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制作動態(tài)彈出的對話框”的內容了,經過本文的學習后,相信大家對怎么用VC制作動態(tài)彈出的對話框這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。