• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    談對話框的動畫彈出和動畫消隱

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 14次 | 進入軟件測試論壇討論

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

      請按以下步驟實現:

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

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

    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函數,添加如下代碼:

    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);
    }

      好了,對話框的動畫出現和消隱實現了,運行程序我們會發現對話框平滑的劃出,關閉程序我們會發現對話框平滑的消失。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>