欧美特黄不卡,涩涩视频在线,成人国产精品一区二区网站,亚洲一区二区三区欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

談對(duì)話框的動(dòng)畫彈出與動(dòng)畫消隱

談對(duì)話框的動(dòng)畫彈出與動(dòng)畫消隱

更新時(shí)間:2022-05-05 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

在Windows應(yīng)用程序中,對(duì)話框是應(yīng)用最廣泛也是比較難控制其風(fēng)格(外表)的一類窗口。相信用過Windows 的朋友在享受其強(qiáng)大功能的同時(shí),一定也為它所提供的具有立體感的界面而感嘆吧。通常情況下,對(duì)話框的彈出和消隱都是瞬時(shí)的,下面將介紹如何實(shí)現(xiàn)對(duì)話框的動(dòng)畫彈出和消隱,增強(qiáng)程序的美觀性。

  請(qǐng)按以下步驟實(shí)現(xiàn):

  第一步:生成我們的工程(基于對(duì)話框)FlashDlg,所有的選項(xiàng)都取默認(rèn)值,在對(duì)話框上隨意添加幾個(gè)控件。

  第二步:在對(duì)話框的類頭文件中定義如下變量,如下:

CPoint point;
int nWidth,nHeight;
int dx,dy;
int dx1,dy1;

  第三步:在OnInitDialog()中添加如下代碼:

BOOL CFlashDlgDlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 CRect dlgRect;
 GetWindowRect(dlgRect);
 CRect desktopRect;
 GetDesktopWindow()->GetWindowRect(desktopRect);
 MoveWindow(
  (desktopRect.Width() - dlgRect.Width()) / 2,
  (desktopRect.Height() - dlgRect.Height()) / 2,
   0,
   0 );
 nWidth=dlgRect.Width();
 nHeight=dlgRect.Height();
 dx=2;
 dy=4;
 dx1=2;
 dy1=2;
 SetTimer(1,10 , NULL);
 return TRUE;
}

  第四步:添加OnTimer函數(shù),添加如下代碼:

void CFlashDlgDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CRect dlgRect;
GetWindowRect(dlgRect);

CRect desktopRect;
GetDesktopWindow()->GetWindowRect(desktopRect);


if(nIDEvent == 1)
{
MoveWindow(
(-dx+desktopRect.Width() - dlgRect.Width()) / 2,
(-dy+desktopRect.Height() - dlgRect.Height()) / 2,
+dx+dlgRect.Width(),
+dy+dlgRect.Height() );

if(dlgRect.Width() >=nWidth)
dx=0; // do not over grow
if(dlgRect.Height() >=nHeight)
dy=0; // do not over grow
if((dlgRect.Width() >=nWidth) && (dlgRect.Height() >=nHeight))
KillTimer(1); //Stop the timer
}


if((dlgRect.Width() >=nWidth) && (dlgRect.Height() >=nHeight))
KillTimer(1); //Stop the timer

if(nIDEvent == 2)
{
MoveWindow((+dx+desktopRect.Width() - dlgRect.Width()) / 2,
(+dy+desktopRect.Height() - dlgRect.Height()) / 2,
-dx1+dlgRect.Width(),
-dy1+dlgRect.Height() );

if(dlgRect.Width() <= 0)
dx1=0; // do not over grow
if(dlgRect.Height() <= 0 )
dy1=0; // do not over grow
if((dlgRect.Width() <= 0 ) && (dlgRect.Height() <=0))
{
KillTimer(2); //Stop the timer
CDialog::OnOK();
}

}

CDialog::OnTimer(nIDEvent);
}

  好了,對(duì)話框的動(dòng)畫出現(xiàn)和消隱實(shí)現(xiàn)了,運(yùn)行程序我們會(huì)發(fā)現(xiàn)對(duì)話框平滑的劃出,關(guān)閉程序我們會(huì)發(fā)現(xiàn)對(duì)話框平滑的消失。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 天台县| 上饶县| 麻栗坡县| 象州县| 奇台县| 抚松县| 丹凤县| 都昌县| 和林格尔县| 田林县| 滁州市| 康马县| 鄂托克前旗| 濉溪县| 张家口市| 麻城市| 沅陵县| 临颍县| 文昌市| 余干县| 秦安县| 广安市| 绥芬河市| 桂东县| 大同县| 宜城市| 乐亭县| 南丰县| 库车县| 宝山区| 汨罗市| 洱源县| 房产| 临漳县| 丰镇市| 房山区| 乌恰县| 舞阳县| 富锦市| 屯留县| 巫山县|