亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

用C++ Builder開發(fā)動畫DLL

2019-09-06 23:33:54
字體:
供稿:網(wǎng)友

                     
 我 們 在Windows98 環(huán) 境 下 執(zhí) 行 拷 貝 文 件、 查 找 文 件 等 計 算 機 耗 時 較 長 的 操 作 時,Windows 會 顯 示 一 個 小 小 的 動 畫, 指 示 正 在 進(jìn) 行 的 操 作, 與 死 板 的 靜 止 圖 像 相 比 增 色 不 少。 那 么 我 們 自 己 開 發(fā) 軟 件 時, 能 否 也 顯 示 一 個 這 樣 的 動 畫 提 示 呢 ? 筆 者 開 發(fā) 了 一 個 能 夠 在CB 下 調(diào) 用 的 動 畫DLL, 由 于 采 用 多 線 程 編 程,CB 調(diào) 用 的DLL 函 數(shù) 能 夠 及 時 將 控 制 權(quán) 交 還 給CB, 不 影 響 應(yīng) 用 系 統(tǒng) 的 運 轉(zhuǎn)。

一、 代 碼 與 編 譯 選 項
在C + +Builder 中 創(chuàng) 建 一 個 空 白 的DLL 項 目。
創(chuàng) 建 一 個 空 白 的Form, 修 改 它 的 屬 性 為:
BorderStyle=bsDialog
BorderIcons 的 子 屬 性 均 為False
FormStyle=fsStayOnTop
Position= poScreenCenter
Name=StatusForm

在Form 上 添 加 一 個Win32 下 的Animate 控 件Animate1, 修 改 它 的 屬 性 為
Align=alTop

在Form 上 添 加 一 個Standard 下 的Button 控 件Button_Cancel, 再 添 加System 下 的Timer 控 件Timer1, 設(shè) 置 定 時Interval 時 間 位250, 較 快 響 應(yīng) 用 戶 的 取 消 請 求。
----因 為PB 應(yīng) 用 系 統(tǒng) 與 動 畫 窗 體 代 碼 分 別 屬 于 兩 個 線 程, 不 能 采 用PB 線 程 直 接 關(guān) 閉 動 畫 窗 體 線 程 的 窗 口, 否 則 會 引 起 系 統(tǒng) 運 行 不 正 常, 因 此 采 用PB 線 程 設(shè) 置 關(guān) 閉 標(biāo) 志, 而 動 畫 線 程 采 用Timer 控 件 定 時 檢 查 標(biāo) 志, 一 旦 檢 測 到 關(guān) 閉 標(biāo) 志, 就 關(guān) 閉 窗 口, 清 除 線 程 標(biāo) 志, 結(jié) 束 動 畫 線 程。

----5. 下 面 給 出 編 碼 及 編 碼 原 理:

----(1)DLL 主 體 代 碼:

/ *DLL 主 體 代 碼
  * 定 義DLL 公 用 變 量
*g_CommonAVI 對Animate 控 件
動 畫 類 型 索 引
 *gi_Canceled Button_Cancel
按 鈕 是 否 被 選 擇 過
?。猤i_AVIType 要 顯 示 的 動 畫 類 型,
由DLL 輸 出 函 數(shù) 做 為 參 數(shù) 輸 入
?。猤i_RequestClose 請 求 動 畫 線 程 關(guān) 閉 標(biāo) 志
?。猤i_WindowActive 動 畫 窗 口 所 處 的 狀 態(tài)
 *lpsWinTitle 動 畫 窗 體 的 標(biāo) 題,
由DLL 輸 出 函 數(shù) 做 為 參 數(shù) 輸 入
 */

   TCommonAVI g_CommonAVI[]={
    aviNone, aviFindFolder,
    aviFindFile, aviFindComputer,
   aviCopyFiles, aviCopyFile,
    aviRecycleFile, aviEmptyRecycle,
   aviDeleteFile
   };
   int gi_Canceled=0,gi_AVIType=0;
   int gi_RequestClose=0,gi_WindowActive=0;
   char lpsWinTitle[256];
   HWND hWndParent=NULL;

   / * 定 義DLL 輸 出 函 數(shù) */
   extern “C" __declspec(dllexport) int pascal Dll
?? EntryPoint(HINSTANCE hinst, unsigned
long reason, void *);
   extern “C" __declspec(dllexport) int pascal
ShowStatus Window
(int AVIType,LPSTR WinTitle,long hWnd);
extern “C" __declspec(dllexport)
int pascal GetStatus(int ai_CloseWin);
extern “C" __declspec(dllexport)
int pascal CloseStatusWindow();

    / * 定 義 線 程TformThread: */
   class TFormThread : public TThread{
   public: // User declarations
   __fastcall TFormThread(bool CreateSuspended);
   void __fastcall Execute(void);
   };
   __fastcall TFormThread::
TFormThread(bool CreateSuspended):
TThread(CreateSuspended){
   }
/ * 動 畫 線 程 執(zhí) 行 代 碼,
動 畫 窗 體 的 定 時 器 控 件 會 關(guān) 閉 它,
清 除 窗 體 存 在 標(biāo) 志 后 結(jié) 束 線 程 的 運 行
*/
   void __fastcall TFormThread::Execute(void){
   gi_WindowActive=1;
    StatusForm=new TStatusForm(NULL);

    StatusForm ->Caption=lpsWinTitle;
    StatusForm ->ShowModal();
    gi_WindowActive=0;
    delete StatusForm;
    gi_RequestClose=0;
   }
   / * 定 義 一 個 線 程 實 例 指 針 */
   TFormThread *FormThread;
    / * 輸 出 函 數(shù) 代 碼 實 現(xiàn) 部 分
    * DllEntryPoint 32 位DLL 入 口
    * ShowStatusWindow 顯 示 動 畫 窗 口,
它 通 過 創(chuàng) 建 一 個 線 程 來 創(chuàng) 建 窗 口,
避 免 由 于 窗 口 的MODAL 屬 性 而 使
控 制 權(quán) 不 能 及 時 的 返 還 給 調(diào) 用 者
    * GetStatus 取 得“ 取 消” 狀 態(tài),
即 用 戶 有 沒 有 選 擇“ 取 消” 按 鈕
    * CloseStatusWindow 關(guān) 閉 動 畫 窗 口,
    */
   __declspec(dllexport) int WINAPI DllEntryPoint
(HINSTANCE hinst, unsigned long reason, void *)
   {
   return 1;
   }

 __declspec(dllexport) int pascal ShowStatusWindow
(int AVIType,LPSTR WinTitle,long hWnd){
 hWndParent=(HWND)hWnd;
memset(lpsWinTitle,0,sizeof(lpsWinTitle));
 strncpy(lpsWinTitle,WinTitle,sizeof(lpsWin Title) -1);
if (AVIType>0 & & AVIType<=8) gi_AVIType="AVIType;"     FormThread="new" TFormThread(true);       FormThread ->Priority = tpNormal;
    FormThread ->Resume();
   }

 __declspec(dllexport) int pascal GetStatus
(int ai_CloseWin){
   if (gi_Canceled)
   if (gi_WindowActive){
   gi_RequestClose=1;
    while(gi_RequestClose);
    }

    return gi_Canceled;
   }

   __declspec(dllexport) int pascal CloseStatusWindow(){
    if (gi_WindowActive){
   gi_RequestClose=1;
    while(gi_RequestClose);
   }

    return gi_Canceled;
   }


----(2) 窗 體StatusForm 的 代 碼:

   TStatusForm *StatusForm;
   extern int gi_Canceled;
   extern int gi_AVIType;
   extern TCommonAVI g_CommonAVI[];
   __fastcall TStatusForm::TStatusForm
(HWND ParentWindow)
    : TForm(ParentWindow)
   {
    gi_Canceled=0;
   }
   // 取 消 按 鈕 并 不 直 接 關(guān) 閉 窗 體,
而 指 示 設(shè) 置 取 消 標(biāo) 志, 供 調(diào) 用 者 查 看
   void __fastcall TStatusForm::Button_CancelClick
(TObject *Sender)
   {
   gi_Canceled=1;
   // ModalResult=mrCancel;
   }
     // 激 活 動 畫, 在FORMCREATE 事 件 中
   void __fastcall TStatusForm::FormCreate
(TObject *Sender)
   {
    Animate1 ->CommonAVI=g_CommonAVI[gi_AVI
Type];
    Animate1 ->Active = true;
   }
 
 extern int gi_RequestClose;
 // 定 時 器 事 件 檢 測 到 結(jié) 束 標(biāo) 志 關(guān) 閉 窗 體
 void __fastcall TStatusForm::Timer1Timer
(TObject *Sender)
   {
    if (gi_RequestClose){
    ModalResult=mrOk;
    }
   }

v6. 設(shè) 置 編 譯 選 項: 打 開Project Options 對 話 框, 清 除Linker 屬 性 頁 中 的 Use Dynamic RTL 標(biāo) 志, 清 除Packages 屬 性 頁 中 的Build with runtime packages。 這 樣 只 要 單 個DLL 就 可 以 運 行 了, 而 不 必 安 裝 一 些 動 態(tài) 連 接 運 行 時 間 庫。

二、 使 用 動 畫DLL
----1. 定 義:

   //Declare -> Global External Functions
   FUNCTION Long ShowStatusWindow
(Long AVIType,String WinTitle,long hWnd)
&LIBRARY “STATWIN.DLL" ALIAS FOR
“Show StatusWindow"

   FUNCTION Long GetCancelStatus
(Long CloseWindow) &LIBRARY
“STATWIN.DLL" ALIAS FOR “GetStatus"

   FUNCTION Long CloseStatusWindow() &
 LIBRARY “STATWIN.DLL" ALIAS FOR
“CloseStatusWindow"

----2. 調(diào) 用:

   long ll_EndTime
   // 顯 示 查 找 文 件 夾 動 畫
   ShowStatusWindow(2)
   setpointer(HourGlass!)

   ll_EndTime = Cpu() + 10 * 1000
   DO
    if GetCancelStatus(0)=1 then
    exit
   end if
    // 做 想 做 的 事 情
   LOOP UNTIL cpu() > ll_EndTime

   CloseStatusWindow()
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

天堂在线免费观看视频| 国产精品333| 日韩一区二区久久| 亚洲影院在线观看| 肉丝袜脚交视频一区二区| 色综合久久久久网| av男人的天堂网| 国产精品麻豆久久| 亚洲综合丁香婷婷六月香| 中文天堂av| 成人av资源| 手机视频在线观看| 精品制服美女久久| 中文字幕日本视频| 精品福利久久久| 国产无套内射又大又猛又粗又爽| 天天色天天综合网| 国产精品99久久久精品无码| 亚洲免费电影一区| 久久国产精品久久久久久电车| 在线免费av导航| 激情成人综合网| 欧美13一14另类| 草草在线观看| 国产又粗又大又黄| 欧美乱妇一区二区三区不卡视频| 日韩av成人高清| 国产精品美女一区二区| 羞羞影视羞羞在线| 极品少妇一区二区三区精品视频| 亚洲柠檬福利资源导航| 国产精选第一页| 91色综合久久久久婷婷| 国产精品亚洲四区在线观看| 亚洲一级影院| aaa黄色大片| 黄动漫网站在线观看| 奇米影视亚洲狠狠色| 亚洲第一香蕉网| 无码人妻精品一区二区蜜桃百度| 午夜欧美巨大性欧美巨大| 男女性色大片免费观看一区二区| 丰满少妇中文字幕| 亚洲黄色片免费| 中文字幕一精品亚洲无线一区| 国产成人av一区二区三区| 国产成人精品无码片区在线| 午夜在线电影亚洲一区| 久久精品国产96久久久香蕉| 特级特黄刘亦菲aaa级| 在线亚洲+欧美+日本专区| 九一在线视频| 日韩精品久久久免费观看| 51xx午夜影福利| 先锋影音av在线资源| 亚洲美女福利视频网站| 精品国产亚洲AV| 亚洲av无码一区二区三区观看| 亚洲不卡中文字幕无码| 久久中文字幕av一区二区不卡| 久久99国产精品久久| 亚洲人精品午夜射精日韩| 超碰网在线观看| 1769国产精品| 国产精品一卡二卡三卡| 亚洲色图视频网站| 韩国女主播成人在线观看| 免费日韩av片| 日韩电影一区| 欧美日韩精品一区二区天天拍小说| 欧美少妇性性性| 亚洲视频欧美视频| 一区二区三区四区在线视频| 久久亚洲影视婷婷| 菠萝蜜影院一区二区免费| 四虎视频在线精品免费网址| a级免费视频| 午夜影院在线播放| 玖玖爱视频在线| 石原莉奈在线亚洲二区| 久久亚洲精品大全| 欧美一级小视频| 成人黄色短视频在线观看| 国产日韩欧美二区| 一级网站在线观看| 黄色成人美女网站| 久久精品国产成人| 色香阁99久久精品久久久| 久热免费视频| 欧美美女性生活视频| 欧美h视频在线观看| 91麻豆精品国产91久久久久久| 久久色中文字幕| 国产精品色视频| 免费一级特黄特色大片| 高清不卡av| 欧美午夜小视频| 色婷婷亚洲婷婷| 久草网站在线观看| 最近2019中文字幕一页二页| 日韩一区二区在线免费观看| 精品国产91久久久久久浪潮蜜月| 国产亚洲精品久久久久婷婷瑜伽| 亚洲一区二区三区免费视频| 日韩国产网站| 国产精品狼人色视频一区| 日韩成人免费在线视频| 91精品一区二区三区在线观看| 亚洲一区二区三区精品在线观看| 精品丝袜一区二区三区| 欧美另类极品videosbest视| 免费观看羞羞视频网站| 天天视频天天爽| 99精品欧美一区二区三区综合在线| av网站一区| 国产毛片在线| 亚洲精品国自产拍在线观看| 四虎亚洲成人| 9久草视频在线视频精品| 波多野结衣小视频| 久久er99热精品一区二区| 亚洲а∨天堂久久精品喷水| 粉嫩av一区| 国产成人美女视频| 亚洲精品suv精品一区二区| 伊人国产在线观看| 成人黄色三级视频| 中文字幕人妻丝袜乱一区三区| 日韩精品一区二区不卡| 国产自产一区二区| 日韩福利视频在线| 国产激情无码一区二区三区| www.日日夜夜| 91玉足脚交白嫩脚丫在线播放| 亚洲ab电影| 日批视频在线看| 国产suv精品一区二区| 国产精品夜色7777狼人| 在线观看亚洲电影| 国产传媒在线播放| 久久综合社区| 有没有片在线看www| 正在播放亚洲精品| 亚洲成人av中文| 久久久久久久久久久久网站| 日本a级片免费观看| 国产激情视频一区二区三区欧美| 激情视频一区二区| 91精品国产高清91久久久久久| 精品一区二区三区在线播放| 欧美午夜一区二区福利视频| 欧美视频二区欧美影视| 欧美三级在线播放| 电影k8一区二区三区久久| 亚洲精品**中文毛片| 男人扒开美女尿口无遮挡图片| 国产精品久久久久久久久免费看| 中文字幕日本在线观看| 亚洲国产综合久久| 国产成人精品a视频| 91香蕉国产在线观看软件| 亚洲精品成a人在线观看| 又黄又www的网站| 夜先锋资源站| 成人毛片高清视频观看| 深夜国产在线播放| 亚洲免费激情视频| 黑人操亚洲人| 中文字幕一精品亚洲无线一区| 国产.com| 香蕉久久久久久久av网站| 杨幂一区二区国产精品| 亚洲品质自拍视频网站| 免费在线看污| 综合久草视频| 成年人黄色网址| 天天摸日日操| 久久精品人人做人人爽电影蜜月| …久久精品99久久香蕉国产| 欧美亚洲另类在线| 久久黄色片网站| 欧美精品一二三区| 羞羞的视频在线| 91国视频在线| 欧美成人亚洲成人日韩成人| 中文字幕av一区二区三区人妻少妇| 日产国产欧美视频一区精品| 国产揄拍国内精品对白| 一区二区三区视频在线观看免费| 国产精品社区| 99久久久久久久久| 亚洲aa在线观看| 国产精品1区2区3区| 美女三级黄色片| 日韩 欧美 综合| wwwav网站| 911久久香蕉国产线看观看| 深夜福利视频网站| 超碰男人的天堂| av伦理在线| 激情中文字幕| 男人添女人下面高潮视频| 久久免费国产| 一级黄在线观看| 国产一级片免费看| 亚洲最大的成人网| 欧美最新另类人妖| 久久久www免费人成精品| 国产成人毛片| 国产精品国产av| 国产精品一级伦理| 久久久久久久久久久久久91| 理论片午夜视频在线观看| 九色porny极品| 伊人网在线综合| 99久久久精品| 色综合99久久久无码国产精品| 免费一级毛片在线观看| 国产成人啪午夜精品网站男同| 91丨porny丨在线中文| 亚洲v.com| 秋霞欧美一区二区三区视频免费| 亚洲高清资源在线观看| 国产精品伦理久久久久久| 牛牛视频精品一区二区不卡| 高清电影在线免费观看| 亚洲午夜国产一区99re久久| 国产性猛交╳xxx乱大交| 日本片在线观看| 久久综合色一综合色88| 精品久久久久中文慕人妻| 亚洲精品在线视频| 在线免费观看一区二区三区| www.99re7| 日韩精品免费播放| 夜夜嗨av色综合久久久综合网| 欧美一区2区三区4区公司二百| 同心难改在线观看| 日本在线中文字幕一区二区三区| 在线视频你懂得一区二区三区| 亚洲精品在线视频| 中文字幕亚洲欧美| 在线视频欧美亚洲| 狠狠狠色丁香婷婷综合久久五月| 日韩丝袜美女视频| 欧美78videosex性欧美| 欧美99在线视频观看| 美女被啪啪一区二区| 最近中文字幕一区二区| 你懂的网站在线| 国产一区免费| av在线播放网| 欧美成人激情视频| 国产成人一二三区| 精品福利久久久| 884aa四虎影成人精品一区| 秘密基地免费观看完整版中文| 最新版天堂资源中文官网| 麻豆影视国产在线观看| 日韩欧美国产免费| 日韩视频免费大全中文字幕| 超碰在线超碰在线| 国产精品无码一区二区三区| 色偷偷精品视频在线播放| bestiality新另类大全| 99精品桃花视频在线观看| 在线精品国产欧美| 一区二区三区亚洲变态调教大结局| 午夜色在线观看| 日韩尤物视频| 成人免费视频网站入口::| 狠狠躁狠狠躁视频专区| 天堂中文资源在线观看| 精品视频1区2区| 亚洲大胆视频| 亚洲国产精品免费| 久久国产精品99国产精| 日韩影视精品| 国产成年妇视频| 欧美本精品男人aⅴ天堂| 久久99久久99| 国产精品丝袜黑色高跟| 精品国产乱码久久久久久老虎| 91探花在线观看| 一区二区三区亚洲变态调教大结局| 蜜臀av无码一区二区三区| 国产真人做爰视频免费| 四虎在线观看| 国产毛片一区二区三区va在线| 久久激情综合| 麻豆精品一区二区三区| 成人在线观看免费| 免费人成网站在线观看欧美高清| 理论片午午伦夜理片在线播放| 91抖音在线观看| 奇米视频888战线精品播放| 精品99久久| 中文字幕第三区| 亚洲免费大片| 三上悠亚亚洲一区| 亚洲男人天堂网| 久草在线青青草| 国产精品久久久久久久久久久久久久久久| 国产福利精品av综合导导航| cao在线视频| 午夜久久电影网| 1区2区3区国产精品| 久青草国产97香蕉在线视频| 亚洲色大成网站www| 国产精品97在线| 午夜国产福利| 顶级黑人搡bbw搡bbbb搡| 777午夜精品视频在线播放| 国产一区二区免费在线| 中文字幕第四页| 免费毛片在线不卡| 成人午夜视频福利| 偷拍夫妻性生活| 久久亚洲精品中文字幕蜜潮电影| 色资源二区在线视频| 毛片毛片毛片毛片毛片毛片| 国产免费一区二区三区四区五区| 国产一区视频在线播放| 日韩欧美在线播放视频| 亚洲欧美综合另类| 91蜜桃在线观看| 青青青免费在线| 日韩肉感妇bbwbbwbbw|