溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用VC制作動態(tài)彈出的對話框

發(fā)布時間:2021-11-04 15:11:51 來源:億速云 閱讀:109 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么用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+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制作動態(tài)彈出的對話框”的內容了,經過本文的學習后,相信大家對怎么用VC制作動態(tài)彈出的對話框這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vc
AI