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

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

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

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

    用VC制作動態彈出的對話框

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

    領測軟件測試網 作者:周鳴揚

      在“網絡螞蟻”中,如果在下載過程中有錯誤發生,或是提示下載完成時,你都可以在屏幕中央看到一個由小變大、動態彈出的對話框,那么,這個動態彈出的對話框是如何實現的呢?

      一、選擇方法
      通常,我們可以在對話框的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;

      }

      該程序的代碼比較簡單,編譯之后進入程序的幫助選單,你會看見一個由小變大的對話框躍然于屏幕之上。

      三、深入討論
      需要說明的是,本文中主要的目的是介紹編程思路,所以在編程中是首先假定了幫助對話框是正方形或基本上是正方形的,如果你的幫助對話框的形狀長寬比例較大,該程序在運行時的界面效果會不太理想。這時,你可以在編程中考慮按對話框的長寬比例來動態創建其他形狀的顯示區域。

    延伸閱讀

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


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