亚洲香蕉成人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ā)表

圖片精選

精品久久电影| 国产日韩专区| 日本亚洲一区二区| 116极品美女午夜一级| 欧美精品做受xxx性少妇| 在线黄色国产视频| 中文在线一区二区三区| 亚洲一区二区三区无码久久| 国产伦理在线观看| 一区二区三区在线资源| 狂野欧美性猛交| 午夜精品一区二区三区在线| 在线观看18视频网站| 又黄又爽毛片免费观看| 玖玖在线播放| 在线观看av黄网站永久| 午夜av电影一区| 在线观看亚洲欧美| 男男视频在线观看网站| 国产人成高清视频观看| 国产美女极度色诱视频www| 免费理论片在线观看播放老| av在线不卡观看免费观看| 91精品久久久久久久久中文字幕| 国产精品影院在线| 精品午夜电影| 日韩女同一区二区三区| 91久色porny| 免费看av的网址| 美国精品一区二区| 跑男十一季在线观看免费| 久久99久久久久久| 国产香蕉视频在线| 久久视频免费在线| 中文字幕精品亚洲| 国产在线精品一区二区不卡了| 日韩中文字幕免费视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 精品久久久999| 国产午夜精品免费一区二区三区| 国产一区免费在线| 91网页版在线登录入口| 教室别恋欧美无删减版| 久久久久麻豆v国产精华液好用吗| 性生活视频软件| 国产绿帽一区二区三区| 国产免费一区二区三区四在线播放| 亚洲男人第一网站| 欧美成人精品在线播放| 国产无遮挡在线视频免费观看| 欧美激情小视频| 成人3d动漫一区二区三区91| 1024手机看片国产| 亚洲精品aⅴ| 神马久久久久久久久久久| 欧美精品一区二区三区中文字幕| 天天影视欧美综合在线观看| 妞干网免费视频| 一级特黄妇女高潮| 波多野结衣激情视频| 亚洲电影一级黄| 日韩精选在线观看| 在线看的av网站| 91成人免费观看网站| 日日天天狠狠| xfplay爱情电影网love| 国产精品久久久久久久久久直播| 污污在线观看| 一区二区三区视频在线免费观看| 亚洲36d大奶网| 亚洲视频你懂的| www.久久热.com| 一本色道久久综合亚洲| 在线免费视频你懂得| 天天操夜夜拍| 日韩成人一区二区三区| 国产精品1区2区在线观看| 天天躁日日躁狠狠躁av麻豆男男| 亚洲女厕所小便bbb| www.午夜色大片| 国产精品夜夜夜爽张柏芝| 成人亚洲性情网站www在线观看| 成人av免费| 国产无遮挡猛进猛出免费软件| 国产精品特级毛片一区二区三区| 黄色一级视频播放| 国产一区二区三区中文字幕| 国产日韩在线免费| 二区三区在线| 亚洲成人精品视频在线观看| 亚洲在线观看网站| 国内精品久久99人妻无码| 亚洲成人免费| 亚洲成人一二三| 精品久久久久久中文字幕2017| 异国色恋浪漫潭| 亚洲欧洲日产国产综合网| 四虎永久在线观看| 性xxxfreexxxx性欧美| 老牛影视av一区二区在线观看| 久久久精品午夜少妇| 亚洲一区二区三区四区五区中文| 成人动漫视频在线| www.成人在线视频| 欧美人妻一区二区| 成人在线免费观看网站| 4444欧美成人kkkk| 国产自产v一区二区三区c| 青草在线视频| 国产suv一区二区三区| 久久久久久久久久久成人| 国产性色av一区二区| 91电影在线观看| 在线sese| 91精品国产综合久久小美女| 亚洲超碰97人人做人人爱| 久久资源综合| 欧美性生活大片免费观看网址| 午夜精品久久久久久99热软件| 日本精品久久久| 中文字幕一区二区久久人妻网站| 在线观看中文字幕| 欧美一区二区视频在线播放| 99精品国产一区二区三区不卡| 天堂中文在线视频| 91亚洲精品一区| 一区二区三区在线视频观看58| 91看片在线| 久久精品精品电影网| a级片在线播放| 99热亚洲精品| 亚洲国产岛国毛片在线| 久草在线免费福利资源| 成人综合日日夜夜| 另类欧美视频| 永久av在线| 欧美天堂一区| 911久久香蕉国产线看观看| 一个人看的www片免费高清视频| 免费看黄色一级大片| 伊人精品一区二区三区| 国产一区二区主播在线| 欧美大片专区| 小舞被吸乳羞羞网站视频| 国精品**一区二区三区在线蜜桃| 日韩欧美电影| 精品在线不卡| 7m精品国产导航在线| 日韩欧美第二区在线观看| 大胸美女被爆操| 国产老女人精品毛片久久| 亚洲国产精品成人久久综合一区| 男女免费观看在线爽爽爽视频| 亚洲av无码一区二区三区dv| 狠狠操狠狠干视频| xxxxxwwww免费视频| 国产精品久久久久久久久免费相片| 777久久精品| 国内久久精品视频| 国产欧美一区二区三区在线看| 亚洲天堂小视频| 国产网站av| 亚洲成av人电影| 青青草精品在线视频| 国内精品久久久久久99蜜桃| 国产精品a久久久久久| 日韩精品视频在线观看免费| 国产视频1区| 国产成人啪免费观看软件| 日韩精品无码一区二区三区| 给个网站可以在线观看你懂的| 性欧美xxxx视频在线观看| 亚洲天堂手机在线| 91麻豆精品国产91久久久| 国产乱人视频免费播放| 国产精品久久久久久久app| 日本美女一区二区三区视频| 久久性天堂网| 久久久久久久久久码影片| 岛国大片在线观看| 亚洲成人电视网| 亚洲精选一区二区三区| 精品影片在线观看的网站| 91福利资源站| 91视视频在线观看入口直接观看www| 日韩成人亚洲| 成人免费播放视频| 91成人理论电影| 蜜桃一区二区三区在线观看| 欧洲国内综合视频| 青青草视频一区| 老子影院午夜伦不卡大全| 5278欧美一区二区三区| 男女午夜视频在线观看| 国产美女撒尿一区二区| 国产白袜脚足j棉袜在线观看| 97在线观看免费高| 99精品在线免费在线观看| 国产精品网友自拍| 在线免费看v片| 欧美日韩激情小视频| 欧美不卡1区2区3区| 情趣视频在线观看| 国产乱国产乱老熟300部视频| 免费在线观看av网站| 久久xxx视频| 欧美体内she精视频在线观看| 欧美绝顶高潮抽搐喷水合集| 成年人视频在线看| 狠狠综合久久av一区二区蜜桃| 蜜桃精品一区二区| 国产又粗又硬视频| 美女av免费看| 亚洲第一页在线视频| 日韩一级片在线播放| 日本少妇xxxx动漫| 欧美日韩国产高清视频| 精品无码av一区二区三区不卡| 色资源二区在线视频| 国产欧美一区二区精品婷婷| 亚洲在线网站| 蜜桃视频在线观看成人| av不卡一区| 色综合久久久| 欧美91在线|欧美| 成人av网址在线观看| 亚洲一卡二卡| 老头吃奶性行交视频| 99热在线免费播放| 国产精品一区毛片| 不卡伊人av在线播放| 亚洲一区二区三区四区| 国产一区二区导航在线播放| 欧美日韩三级电影在线| 亚洲一区二区三区午夜| 亚洲电影影音先锋| 久久人人爽人人爽人人片av不| 午夜免费福利视频在线观看| 国产精品无码专区在线观看| 国产麻豆剧传媒精品国产av| 久久久国产免费| 天天看天天摸天天操| 日韩成人av一区二区| 成人精品久久一区二区三区| 欧美日本视频一区| 国产精品久久久久久久久久久久午夜片| 大荫蒂欧美视频另类xxxx| 欧美极品少妇xxxxⅹ高跟鞋| 正在播放一区二区三区| 欧美性猛交xxx乱大交3蜜桃| 欧美三级蜜桃2在线观看| 国产欧美123| 欧美洲成人男女午夜视频| 久久久久久噜噜噜久久久精品| 国产日本久久| 69p69国产精品| 欧美一级淫片播放口| 国内自拍偷拍视频| 亚洲午夜私人影院| 亚洲国产精品黑人久久久| 啦啦啦高清在线观看www| 亚洲视频精选在线| 国产亚洲欧美一区二区| 亚洲色图都市激情| 91av视频在线| 国产精品二区不卡| 亚洲天堂精品一区| 亚洲精品乱码久久久久久久久久久久| 麻豆一区二区麻豆免费观看| 日日夜夜人人| 首页国产精品| 自慰无码一区二区三区| 精品亚洲一区二区三区在线观看| 在线成人午夜影院| 桃花岛tv亚洲品质| 都市激情久久久久久久久久久| 国产黄色免费视频| 欧美日韩经典丝袜| 欧美三区免费完整视频在线观看| 免费萌白酱国产一区二区三区| 日韩av在线网站| 国产精品免费久久| 伊人久久影院| 亚洲人成人无码网www国产| 国模雨婷捆绑高清在线| 日韩亚洲一区中文字幕| 麻豆传媒在线免费看| 久久久久青草大香线综合精品| 91精品人妻一区二区三区| 国产一区欧美| 国产精品免费看| 日韩av中文字幕一区二区| 亚洲国产精品欧美一二99| 日本激情在线观看| 成年网站在线在免费播放| 四虎永久免费影库二三区| 99久久夜色精品国产网站| 久久久精品国产免费观看同学| 久久久久欧美精品| 另类小说视频一区二区| 不卡av一区二区| 国产91亚洲精品| 狠狠久久综合婷婷不卡| 久久国产乱子精品免费女| 色网站在线播放| 中文字幕一二三四| 一区二区三区91| 欧美精品在欧美一区二区| 性欧美大战久久久久久久| 成人av资源网| 99成人在线视频| 中文字幕第36页| 久久国产精品久久国产精品| 欧美日韩国产成人| 美国一区二区三区在线播放| 亚洲一区二区中文字幕| h视频在线播放| 92裸体在线视频网站| eeuss影院在线| 亚洲欧洲视频| 亚洲一区二区自偷自拍| 日本强好片久久久久久aaa| 欧美视频www| 欧美午夜精品久久久久久孕妇| 永久免费看av| 欧美熟妇精品一区二区蜜桃视频| 亚洲精品欧美一区二区三区| 色135综合网|