實現多文檔窗口打開時的效果

實現多文檔窗口打開時的效果
                                                                                              作者:天涯 2007-05-19 12:33:43
標籤:
 
 

實現多文檔窗口打開時的效果,例如,ppt中的從左向右開屏,或捲簾效果。沒做過的第一下看去肯定是無從下手。其實windows api就

有這樣的函數。function   AnimateWindow(hWnd:   HWND;   dwTime:   DWORD;   dwFlags:   DWORD):   BOOL;   stdcall;  

   
MSDN中詳細說明:  
   
function   AnimateWindow(hWnd:   HWND;   dwTime:   DWORD;   dwFlags:   DWORD):   BOOL;   stdcall;  
   
  參數:hWnd   :   想要顯示動畫窗體的句柄  
  dwTime   :   動畫時間數,單位毫秒  
  dwFlags   :   顯示方式,取值如下定義  
  1.AW_HOR_POSITIVE   =   $00000001;   //   從左向右開屏  
  2.AW_HOR_NEGATIVE   =   $00000002;   //   從右向左開屏  
  3.AW_VER_POSITIVE   =   $00000004;   //   從上向下開屏  
  4.AW_VER_NEGATIVE   =   $00000008;   //   從下向上開屏  
  5,AW_CENTER   =   $00000010;   //   從中心向四周擴展,在關閉動畫中則爲從四周向中心收縮  
  6.AW_HIDE   =   $00010000;   //   關閉時候與前面的定義組合使用,如AW_HIDE   or   AW_CENTER  
  7.AW_ACTIVATE   =   $00020000;   //   與1-5組合,開屏使用  
  8.AW_SLIDE   =   $00040000;   //   與1-5   +   6/7   組合,產生滑行效果  
  9.AW_BLEND   =   $00080000;   //   Win2000下使用,淡入淡出效果 

使用這個函數後最容易出現的是,頭文件也包含了,就是編譯不過去。在編譯時系統會報錯如下:

'AnimateWindow' : undeclared identifier
'AW_HIDE' : undeclared identifier
'AW_CENTER' : undeclared identifier

通過錯誤提示可以看出是編譯系統認爲AnimateWindow函數和AW_HIDE、AW_CENTER兩個參數沒有定義。因該函數是定義在Winuser.h頭

文件中的,於時,筆者顯示地在程序中定義了對該頭文件的包含,編譯時卻仍然出現相同的錯誤。爲什麼在VC中編譯不能通過呢?查看MSDN發現,在MSDN中明確提到WindowsNT5.0和Windows98以上版本均支持該函數。仔細觀察會發現,問題出在定義

AnimateWindow函數的頭文件Winuser.h中,在VC安裝目錄下進入include子目錄,用EDIT打開Winuser.h文件,按F3鍵查找

AnimateWindow,可以發現有兩處定義,一處是定義該函數中使用到的參數;另一處是該函數原型的定義。在這兩處定義中均出現了

對Windows版本的條件判斷,#if (WINVER >= 0X500)……,原來問題出在這裏,我們目前所使用的各種Windows主版本號均爲5點零以

下,所以在VC中編譯上述程序時,編譯系統自然將AnimateWindow函數排除在外。因此爲了在我們的程序中使用該函數,就得對其頭

文件進行一些小小的修改,即將#if (WINVER >= 0X500)改爲#if (WINVER >= 0X400),請注意兩處出現該函數定義的部分都要進行修

改。 #undef WINVER
#define WINVER 0x5000

修改好頭文件後,編譯即可通過。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章