亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bcb007.txt

?? c++ builder 的一些txt文檔
?? TXT
字號:

用C++ Builder 3制作屏幕保護程序
  
    用C++ Builder 3制作屏幕保護程序
    
    西北工業大學 郭志鵬 
    
---- 屏 幕 保 護 程 序 是 以scr 為 擴 展 名 
    的 標 準Windows 可 執 行 程 序, 在 激 活 控 制 面 板 的 顯 示 器 屬 
    性 的" 屏 幕 保 護 程 序" 頁 時, 該 模 塊 會 自 動 在Windows 
    啟 動 目 錄(Windows 目 錄 和 系 統 目 錄) 下 查 找 擴 展 名 是scr 
    的 基 于Windows 的 可 執 行 文 件。 使 用 屏 幕 保 護 程 序, 不 僅 
    可 以 延 長 顯 示 器 的 使 用 壽 命, 還 可 以 保 護 私 人 信 息。 
    
---- 編 制 屏 幕 保 護 程 序 不 僅 要 涉 及 
    消 息 的 處 理, 還 要 涉 及 命 令 行 參 數 的 處 理。 在WIN32 SDK 文 
    檔 中 描 述 了 編 制 基 于WIN32 的 標 準 的 屏 幕 保 護 程 序 所 必 
    須 遵 守 的 嚴 格 標 準。 按 照 這 些 標 準, 屏 幕 保 護 程 序 必 
    須 要 輸 出 兩 個 函 數:ScreenSaverProc 和ScreenSaverConfigureDialog, 但 
    是, 在Windows 系 統 中 的 很 多 屏 幕 保 護 程 序 并 沒 有 遵 循 這 
    些 標 準( 使 用impdef 或 者tdump 實 用 工 具 查 看 即 可)。 并 且 使 
    用 該 文 檔 中 介 紹 的 方 法 編 寫 屏 幕 保 護 程 序, 不 僅 要 使 
    用 資 源 編 輯 器, 并 且 在 鏈 接 時 還 要 利 用Scrsaver.lib 文 件( 
    在C++ Builder 3 環 境 下, 不 能 成 功 連 接)。 不 僅 要 涉 及 消 息 
    的 處 理, 還 要 涉 及 命 令 行 參 數 的 處 理。 
    
---- C++ Builder 3 是 一 種 快 速 的 應 用 程 序 
    開 發 工 具, 提 供 了 許 多 類 型 的 應 用 程 序 開 發 模 板, 但 
    沒 有 提 供 開 發 屏 幕 保 護 程 序 的 模 板, 并 且 在 其 在 線 幫 
    助 中 也 沒 有 提 及 如 何 開 發 這 類 應 用 程 序。 經 過 本 人 的 
    研 究, 找 到 了 用C++ Builder3 編 制 屏 幕 保 護 程 序 的 方 法。 
    
---- 在 控 制 面 板 的" 顯 示 器 屬 性" 
    項 的" 屏 幕 保 護 程 序" 頁 中 進 行 設 置 時, 要 遇 到 三 
    種 類 型 的 命 令 行 參 數, 并 且, 各 種 情 況 下 的 屏 幕 保 護 
    程 序 的 顯 示 結 果 也 各 不 相 同, 一 般 來 講, 就 需 要 三 種 
    類 型 的 窗 體( 或 兩 種, 在 隨 后 的 內 容 中 討 論)。 下 面 
    將 分 四 步 來 具 體 地 說 明 如 何 編 制 屏 幕 保 護 程 序。 
    
---- 一、 屏 幕 保 護 程 序 的 選 擇 
    
---- 如 果 在 標 題 為" 屏 幕 保 護 程 序" 
    的 下 拉 列 表 框 中 選 中 了 某 個 保 護 程 序 時, 系 統 會 自 動 
    啟 動 該 程 序, 這 個 程 序 的 顯 示 范 圍 是 在 這 個 頁 面 上 的 
    顯 示 器 圖 形 的 屏 幕 范 圍, 同 時, 會 將 兩 個 命 令 行 參 
    數: 一 個 是"/p"; 另 一 個 是 顯 示 窗 口 的 句 柄, 傳 遞 
    給 這 個 被 選 中 的 程 序。 因 此, 這 類 程 序 首 先 應 該 能 夠 
    處 理 命 令 行 參 數。 在C++ Builder3 中, 與 命 令 行 參 數 處 理 有 
    關 的 函 數 是:ParamCount() 和ParamStr(), 具 體 的 申 明 方 式 如 下: 
    
    
---- 1 . extern PACKAGE int __fastcall ParamCount(void); 
    
    
---- 該 函 數 返 回 命 令 行 參 數 的 個 
    數, 但 不 包 含 應 用 程 序 本 身。 
    
---- 2 . extern PACKAGE AnsiString __fastcall 
    ParamStr(int Index); 
    
---- 該 函 數 返 回 指 定 索 引 值 的 命 令 
    行 參 數。ParamStr(0) 返 回 的 是 應 用 程 序 本 身。 
    
---- 所 以, 在 這 以 步 驟 中 的 參 數 判 
    斷 的 語 句 如 下: 
    if(UpperCase(ParamStr(1)) == 
"-p" || UpperCase(ParamStr(i)) == "/p")
     {
       // add the code in here 
       }  
    
---- 在 完 成 了 參 數 判 斷 后, 就 應 該 
    對 顯 示 窗 口 的 處 理, 為 能 夠 使 程 序 在 顯 示 器 圖 形 的 屏 
    幕 區 域 內 顯 示, 就 要 重 新 設 置 程 序 的 父 窗 口 和 顯 示 區 
    域。 這 要 涉 及 到 父 窗 口 句 柄 的 獲 得 及 父 窗 口 的 設 置, 
    以 及API 函 數 的 調 用。 這 種 環 境 下 的 父 窗 口 句 柄 就 是 傳 
    遞 過 來 的 第 二 個 命 令 行 參 數; 要 設 置 父 窗 口, 只 需 設 
    置 窗 體 的ParentWindow 屬 性 即 可。 這 段 程 序 如 下: 
      
    RECT rc;  // Line1
HWND hWnd=(HWND)
(atol(ParamStr(2).c_str()));  // Line2
    ::GetClientRect(hWnd, &rc);  // Line3
    ParentWindow=hWnd;  // Line4
    Left=rc.left; // Line5
    Top=rc.top; // Line6
    Width=rc.right-rc.left; // Line7
    Height=rc.bottom-rc.top; // Line8
    
---- 在 上 面 的 程 序 片 段 中, 第2 行 語 
    句 是 將 傳 遞 過 來 的 第2 個 參 數 轉 換 成 窗 口 句 柄; 然 后, 
    第3 行 語 句 利 用 這 個 窗 口 句 柄, 調 用API 函 數 以 獲 得 該 窗 
    口 的 客 戶 區 域; 第4 行 語 句 將 選 中 的 屏 幕 保 護 程 序 的 
    父 窗 口 設 置 為 指 定 的 窗 口; 余 下 的 語 句 是 將 該 程 序 的 
    窗 口 大 小 設 置 成 副 窗 口 的 客 戶 區 大 小。 這 一 程 序 片 段 
    的 位 置 應 該 是 在 窗 體 的OnCreate 事 件 處 理 中。 
    
---- 需 要 說 明 的 是, 這 種 類 型( 包 括 
    第 三 步 介 紹 的 窗 體) 的 窗 體 樣 式 應 是: 
         FormStyle=fsStayOnTop;
    
---- 窗 體 邊 界 的 樣 式 應 為: 
         BorderStyle=bsNone;
    
---- 當 然, 這 時 也 不 需 要 鼠 標 圖 形, 
    因 此, 可 以 將 鼠 標 的 形 狀 設 為 crNone: 
         Cursor=crNone;
    
---- 二、 初 始 化 參 數 的 設 置 
    
---- 單 擊" 顯 示 器 屬 性" 模 塊 的" 
    屏 幕 保 護 程 序" 頁 面 中 的" 設 置" 按 鈕 時, 系 統 
    會 啟 動 指 定 的 保 護 程 序 的 初 始 值 設 置 對 話 框, 這 時 傳 
    遞 過 來 的 命 令 行 參 數 是:"/c" 或"-c"( 參 數 的 
    處 理 與 前 面 介 紹 的 相 同)。 通 過 該 對 話 框, 可 以 設 置 
    保 護 程 序 的 一 些 初 始 參 數, 比 如 圖 形 的 變 化 快 慢 等。 
    在 這 段 程 序 中, 還 要 涉 及 到 初 始 化 文 件 或 注 冊 表 的 讀 
    寫, 用 以 記 錄 初 始 化 參 數, 便 于 保 護 程 序 啟 動 時 使 
    用。 
    
---- 三、 預 覽 及 運 行 
    
---- 預 覽 的 效 果 就 是 屏 幕 保 護 程 序 
    被 激 活 后 的 顯 示。 單 擊 單 擊" 顯 示 器 屬 性" 模 塊 的" 
    屏 幕 保 護 程 序" 頁 面 中 的" 預 覽" 按 鈕, 就 可 以 
    觀 察 保 護 程 序 運 行 的 實 際 效 果。 這 時, 系 統 啟 動 該 程 
    序 時 傳 遞 過 來 的 命 令 行 參 數 是:"/s" 或"-s"。 
    對 于 命 令 行 參 數 的 處 理 與 前 面 的 步 驟 相 同, 但 在 這 一 
    步 中, 還 要 對 幾 個 消 息 進 行 處 理, 這 些 消 息 是:WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_MBUTTONDOWN,WM_RBUTTONDOWN,WM_KEYDOWN,WM_ACTIVATE。 
    對WM_MOUSEMOVE 和WM_ACTIVATE 消 息 的 處 理 形 式 如 下: 
    void __fastcall HandleSomeMessage(TMessage &Msg)
{
 switch(Msg.Msg)
 {// ......
  case WM_ACTIVATE: if(Msg.WParamLo==WA_INACTIVE)
                       Close();
                     break;
  case WM_MOUSEMOVE: if(OldMouseX==-1 && OldMouseY==-1) 
//In the constructor, OldMouseX and 
OldMouseY must be initialized by -1.
                       { OldMouseX = Msg.LParamLo;
                         OldMouseY = Msg.LParamHi;
                        }
                      else if (OldMouseX != Msg.LParamLo
                     || OldMouse!= Msg.LParamHi)
                        Close();
                      break;
  ......
  }
}
    
---- 對 于 其 他 的 消 息 僅 僅 是 調 用Close() 
    函 數 來 關 閉 應 用 程 序 即 可。 應 用 這 種 消 息 處 理 方 式 
    時, 必 須 要 類 定 義 時 進 行 消 息 映 射, 不 然 的 話, 就 要 
    在 相 應 的 消 息 響 應 中 進 行 處 理( 使 用 一 定 的 布 爾 變 
    量, 就 可 以 與 第 一 步 合 用 一 個 窗 體)。 
    
---- 與 第 一 步 類 似, 在 該 步 驟 中, 也 
    不 需 要 具 體 的 鼠 標 指 針 的 形 狀, 因 此, 將 鼠 標 指 針 設 
    為crNone: 
         Cursor=crNone;
    
---- 四、 修 改 項 目 源 文 件 
    
---- 在C++ Builder 3 中, 一 個 窗 體 也 就 是 
    一 個 類, 換 句 話 說, 具 有 某 些 特 性 的 類 也 就 是 一 個 窗 
    體, 因 此, 編 制 屏 幕 保 護 程 序 時, 也 不 需 要 什 么 主 窗 
    體, 同 時, 也 不 用 自 動 創 建 某 些 窗 體 了, 這 時 就 要 修 
    改 項 目 源 文 件, 下 面 所 列 出 的 程 序 就 是 筆 者 在 編 制 某 
    屏 幕 保 護 程 序 時 使 用 的 項 目 源 文 件, 供 讀 者 參 考。 
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 CreateMutex(NULL, true, "ScreenSaver");
 if(GetLastError()!=ERROR_ALREADY_EXISTS)
  {
   try
   {
    Application- >Initialize();
    Application- >Title = "屏幕保護程序測試";
if(UpperCase(ParamStr(1))==
"/C" || UpperCase(ParamStr(1))=="-C"
               ||ParamCount()==0)
     {TScrSaverConfiguerF *ScrCfg=
     new TScrSaverConfiguerF(NULL);
      ScrCfg- >ShowModal();
      delete ScrCfg;
      return 0;
      } //單擊"設置"按鈕
else if(UpperCase(ParamStr(1))==
"/P"||UpperCase(ParamStr(1))=="-P")
     {TScrForP *ScrFP=new TScrForP(NULL);
      ScrFP- >ShowModal();
      delete ScrFP;
      return 0;
      } //在"屏幕保護程序"下拉列表框中選擇一個程序
else if(UpperCase(ParamStr(1))==
"/S"||UpperCase(ParamStr(1))=="-S")
     {TScreenSaveF *ScreenSave=new TScreenSaveF(NULL);
      ScreenSave- >ShowModal();
      delete ScreenSave;
      return 0;
      } // 單擊"預覽"按鈕,及運行屏幕保護程序
    else
     return 1;
    }
   catch (Exception &exception)
    {
     Application- >ShowException(&exception);
     }
   }
 return 0;
} //the WinMain Function end
    
---- 前 面 介 紹 了 在C++ Builder 3 下 編 制 屏 
    幕 保 護 程 序 的 方 法. 對 于 C++ Builder 3 這 種RAD 工 具 來 講, 開 
    發 這 類 程 序 也 是 相 當 方 便 的, 按 照 前 述 的 方 法, 可 以 
    在 極 短 的 時 間 開 發 出 屏 幕 保 護 程 序。 對 于 屏 幕 保 護 程 
    序, 在 本 文 中 沒 有 說 明 的 就 是 如 何 設 置 口 令 的 問 題, 
    這 部 分 就 由 讀 者 自 己 摸 索 吧。 
  
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

这里只有精品电影| 日韩亚洲欧美中文三级| 日韩av中文字幕一区二区| 国产婷婷色一区二区三区| 欧美午夜精品电影| 粉嫩aⅴ一区二区三区四区| 日韩av电影免费观看高清完整版在线观看| 国产亚洲综合性久久久影院| 欧美日韩中文字幕精品| 国产69精品久久久久777| 精品亚洲aⅴ乱码一区二区三区| 亚洲靠逼com| 中文字幕二三区不卡| 精品盗摄一区二区三区| 欧美群妇大交群的观看方式| av成人老司机| 国产91露脸合集magnet | 欧美成人精品高清在线播放| 91麻豆福利精品推荐| 国产一区二区影院| 日本不卡123| 亚洲成人av一区二区三区| 亚洲人成电影网站色mp4| 国产三级三级三级精品8ⅰ区| 日韩视频免费直播| 91精品在线免费| 7777精品伊人久久久大香线蕉| 色激情天天射综合网| 97se狠狠狠综合亚洲狠狠| 成人一区二区三区| 国产91综合网| 高清不卡一区二区| 成人精品视频网站| 国产69精品久久久久777| 粉嫩一区二区三区性色av| 国产成人在线观看| 国产99久久久国产精品潘金| 国产精品1区2区3区| 国产白丝精品91爽爽久久| 丁香天五香天堂综合| 高清成人在线观看| 99久久综合狠狠综合久久| 成人激情黄色小说| 91女神在线视频| 欧美亚洲国产一区在线观看网站 | 99久久综合狠狠综合久久| 成人黄色在线网站| 一本久久综合亚洲鲁鲁五月天| 91首页免费视频| 欧美亚洲综合在线| 欧美人牲a欧美精品| 欧美一区二区三区视频免费 | 舔着乳尖日韩一区| 免费看日韩精品| 国产在线精品一区二区| 高清不卡在线观看| 91国产丝袜在线播放| 欧美日韩一区二区欧美激情| 777午夜精品免费视频| 日韩精品在线网站| 欧美极品少妇xxxxⅹ高跟鞋| 成人欧美一区二区三区小说| 亚洲国产日韩精品| 九九精品视频在线看| yourporn久久国产精品| 欧美视频精品在线| www久久精品| 亚洲欧美综合另类在线卡通| 午夜精品免费在线观看| 久久99久久久欧美国产| 成人av在线影院| 欧美调教femdomvk| 国产亚洲制服色| 亚洲一区日韩精品中文字幕| 激情综合网最新| 91色综合久久久久婷婷| 日韩三级视频中文字幕| 国产精品人成在线观看免费| 婷婷国产在线综合| 国产99久久久久| 欧美福利电影网| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲欧洲av一区二区三区久久| 日韩av网站在线观看| www.久久久久久久久| 欧美色成人综合| 久久久久国色av免费看影院| 亚洲午夜在线电影| 成人夜色视频网站在线观看| 9191成人精品久久| 自拍偷在线精品自拍偷无码专区| 欧美96一区二区免费视频| 91在线观看下载| 精品国产露脸精彩对白| 亚洲成人资源网| 国产成人在线影院| 日韩三级视频在线看| 有坂深雪av一区二区精品| 国产综合久久久久影院| 欧美视频中文一区二区三区在线观看| 久久一二三国产| 亚洲成av人片在线| 91麻豆精东视频| 国产日韩欧美激情| 久久精品久久99精品久久| 91丨porny丨国产| 国产拍欧美日韩视频二区| 奇米色一区二区| 欧美视频一区二区三区四区| 中文字幕综合网| 粗大黑人巨茎大战欧美成人| 亚洲精品一区二区在线观看| 视频一区视频二区在线观看| 色婷婷综合久久久久中文| 国产色综合一区| 国产一区在线精品| 日韩精品专区在线影院观看| 午夜日韩在线电影| 91福利国产成人精品照片| 国产精品麻豆久久久| 国产一区二区三区四区五区入口 | 欧美精品一区二区三区在线播放| 亚洲第一成人在线| 欧美性生活大片视频| 亚洲精品国产精华液| 91美女视频网站| 一区二区三区四区高清精品免费观看| 成人18视频日本| 国产精品久久久久久久久免费樱桃| 国产一区日韩二区欧美三区| 亚洲精品在线观看网站| 国内偷窥港台综合视频在线播放| 欧美www视频| 国产麻豆视频一区| 日本一区二区免费在线观看视频| 国内一区二区在线| 欧美国产日韩一二三区| 成人午夜短视频| 国产精品久线观看视频| 成人h动漫精品一区二| 国产精品福利av| 色哟哟欧美精品| 亚洲一线二线三线视频| 欧美日韩国产综合一区二区| 婷婷亚洲久悠悠色悠在线播放| 欧美一区三区二区| 久久99热国产| 亚洲国产精品精华液ab| 99re亚洲国产精品| 亚洲永久精品大片| 欧美一区二区三区在线| 极品美女销魂一区二区三区| 国产日本欧美一区二区| 一本到不卡免费一区二区| 亚洲制服欧美中文字幕中文字幕| 欧美精品久久天天躁| 狂野欧美性猛交blacked| 久久美女艺术照精彩视频福利播放| 国产成人免费视频网站| 亚洲精品成人a在线观看| 欧美精品一二三| 国产一区二区三区不卡在线观看| 国产农村妇女毛片精品久久麻豆| 91视频.com| 奇米一区二区三区av| 国产女主播在线一区二区| 色综合久久九月婷婷色综合| 亚洲h在线观看| 26uuu成人网一区二区三区| 99久久免费精品高清特色大片| 午夜国产不卡在线观看视频| 久久久久久免费网| 欧美专区日韩专区| 国模一区二区三区白浆| 国产精品理论片在线观看| 欧美理论电影在线| 国产精品一区二区不卡| 一区二区三区免费网站| 日韩欧美亚洲一区二区| av在线不卡免费看| 美女爽到高潮91| 亚洲乱码国产乱码精品精98午夜 | 久久久久一区二区三区四区| 一本色道久久综合精品竹菊| 免费成人av在线| 亚洲精品免费看| 国产欧美一区二区精品仙草咪| 欧美日韩一区二区电影| 成人激情图片网| 美女视频黄 久久| 亚洲一区二区三区影院| 国产日韩欧美高清| 日韩无一区二区| 欧美体内she精高潮| 成人永久aaa| 久久99精品久久久久| 亚洲风情在线资源站| 国产精品国产三级国产有无不卡| 欧美成人乱码一区二区三区| 欧美在线免费播放|