用VB5開發(fā)商品軟件的經(jīng)驗談
發(fā)表時間:2023-07-30 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]作者:周學(xué)泳 ----去年以來筆者參與完成了國內(nèi)幾個商品軟件的開發(fā)工作,感覺到底這種實戰(zhàn)和平時自己練習(xí)編程不同,短時間內(nèi)編程水平得到極大的提高。有些項目是用VB做的,接這些項目之前本人還根本沒有用過...
作者:周學(xué)泳
----去年以來筆者參與完成了國內(nèi)幾個商品軟件的開發(fā)工作,感覺到底這種實戰(zhàn)和平時自己練習(xí)編程不同,短時間內(nèi)編程水平得到極大的提高。有些項目是用VB做的,接這些項目之前本人還根本沒有用過VB,雖然VB較之VC++為簡單,容易入門,但是要弄得清楚徹底也不是易事,在開發(fā)中,本人積累了一些經(jīng)驗,在此寫出來與大家共享,有偏頗之處請指正。下面將針對開發(fā)中具體的問題逐一展開敘述:
一、 界 面 設(shè) 計
---- 1、 一 般 性 原 則
---- 界 面 設(shè) 計 的 一 般 性 原 則, 對C++ 的 程 序 員 也 適 用。
界面的整體性。 整 體 性 在 界 面 設(shè) 計 中 最 容 易 違 反, 同 時 也 最 容 易 修 改 和 避 免。 例 如, 在 菜 單 和 聯(lián) 機 幫 助 中 必 須 使 用 相 同 的 術(shù) 語; 對 話 框 必 須 具 有 相 同 的 風(fēng) 格; 美 工 在 對 圖 案、 圖 標 等 設(shè) 計 時 必 須 考 慮 到 統(tǒng) 一、 協(xié) 調(diào) 和 美 觀 等 等。
良好的交互性。 對 于 某 些 軟 件 來 說, 其 使 用 者 往 往 不 是 計 算 機 的 專 業(yè) 人 員, 因 此 需 要 具 有 友 好 交 互 的 界 面, 對 操 作 人 員 的 重 要 操 作 要 提 供 信 息 反 饋。 設(shè) 計 良 好 的 聯(lián) 機 幫 助。 雖 然 對 于 熟 練 用 戶 來 說, 聯(lián) 機 幫 助 并 非 必 不 可 少, 但 是 對 于 大 多 數(shù) 不 熟 練 的 新 用 戶 來 說, 聯(lián) 機 幫 助 具 有 非 常 重 要 的 作 用。
操作的便捷性。 常 用 操 作 的 使 用 頻 度 大, 應(yīng) 該 減 少 操 作 序 列 的 長 度。 例 如, 為 文 件 的 常 用 操 作 如 打 開、 存 盤、 另 存 等 設(shè) 置 快 捷 鍵。 使 常 用 操 作 具 有 捷 徑, 不 僅 會 提 高 用 戶 的 工 作 效 率, 還 使 得 界 面 在 功 能 實 現(xiàn) 上 簡 潔 和 高 效。
設(shè)置錯誤處理。 使 用 者 操 作 中 可 能 出 現(xiàn) 許 多 在 程 序 設(shè) 計 沒 注 意 的 問 題, 在 測 試 時 也 沒 有 發(fā) 現(xiàn), 所 以 必 須 提 供 簡 單 和 容 易 理 解 的 錯 誤 處 理 功 能, 在 出 現(xiàn) 錯 誤 時, 系 統(tǒng) 應(yīng) 該 能 檢 測 出 錯 誤, 錯 誤 出 現(xiàn) 后 系 統(tǒng) 的 狀 態(tài) 不 發(fā) 生 變 化, 或 者 系 統(tǒng) 要 提 供 錯 誤 恢 復(fù) 的 指 導(dǎo)。
----2、軟件封面技術(shù)
---- 封 面 技 術(shù) 在 軟 件 開 發(fā) 中 越 來 越 成 為 一 種 標 準, 一 個 漂 亮 而 醒 目 的 封 面 會 使 軟 件 更 加 充 滿 魅 力, 拿 微 軟 的VB5.0、VC++5.0 來 說, 其 簡 潔 美 觀、 具 有 真 實 三 維 效 果 的 封 面 給 所 有 使 用 者 留 下 了 深 刻 的 印 象。
---- 要 制 作 一 個 專 業(yè) 的 軟 件 封 面, 首 先 制 作 一 個 用 于 封 面 的 窗 體, 命 名 為FrmCover。
將 該 窗 體 屬 性 中 的BorderStyle 設(shè) 置 為0-None, 并 將Appearence 屬 性 設(shè) 為1-3D, 在FrmCover 窗 體 中 可 加 入PictureBox 或Image 設(shè) 置 封 面 圖 案, 加 入TextBox 或Label 顯 示 文 字 信 息。
加 入 一 個Timer, 計 時 到 指 定 時 間 關(guān) 閉FrmCover。
在 主 程 序 啟 動 時, 先Show FrmCover, 并 按 下 面 的 代 碼 設(shè) 置 封 面 總 保 持 在 最 前 面。
---- 聲 明 部 分:
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const TOPMOST_FLAGS =
SWP_NOMOVE Or SWP_NOSIZE
Public Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
注釋:hWnd為作為封面窗體的句柄
注釋:hWndInsertAfter指示為封面窗體前載入的窗體
注釋:X為封面窗體左上角的X坐標
注釋:Y為封面窗體左上角的Y坐標
注釋:cx為窗體新寬度
注釋:cy為窗體新高度
注釋:wFlags影響窗體大小和位置的16位值
注釋:SWP_NOMOVE為不移動窗體,即忽略cx和cy
注釋:SWP_NOSIZE為不改變窗體大小,即忽略X和Y
調(diào)用部分:
Private Sub Form_Load()
Dim r As Long
r = SetWindowPos(Me.hwnd,
HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS)
End Sub
二、 編 程 經(jīng) 驗
---- 1、 關(guān) 于 路 徑
---- 在 平 時 的 編 程 練 習(xí) 中 通 常 直 接 調(diào) 用 硬 盤 中 某 處 的 文 件, 但 是 作 為 商 品 軟 件 通 常 由 用 戶 將 程 序 安 裝 在 自 定 義 的 目 錄, 所 以 切 不 可 在 編 程 時 使 用 直 接 路 徑, 否 則 肯 定 找 不 到 所 需 的 文 件 而 出 錯。
---- 在VB 中 提 供 了 一 個App 對 象, 是 通 過 關(guān) 鍵 字 App 訪 問 的 全 局 對 象。 它 指 定 如 下 信 息: 應(yīng) 用 程 序 的 標 題、 版 本 信 息、 可 執(zhí) 行 文 件 和 幫 助 文 件 的 路 徑 及 名 稱 以 及 是 否 運 行 前 一 個 應(yīng) 用 程 序 的 示 例。App 對 象 的Path 屬 性 是 從 開 發(fā) 環(huán) 境 運 行 該 應(yīng) 用 程 序 時 .VBP 工 程 文 件 的 路 徑, 或 者 當 把 應(yīng) 用 程 序 當 作 一 個 可 執(zhí) 行 文 件 運 行 時 .exe 文 件 的 路 徑。
---- 2、 使 用 資 源 文 件
----在VB中常常要用到字符串、位圖、圖標和數(shù)據(jù)等資源,使用資源文件可以提高性能,因為字符串、位圖、圖標和數(shù)據(jù)可以不必在調(diào)用窗體或模塊時就全部加載,而可以 按需要隨時從資源文件中加載,把需要翻譯的資源單獨放在一個資源文件中,因此沒有必要訪問源代碼或重新編譯應(yīng)用程序,提高了程序的可移植性。
---- 在 一 個 窗 體 設(shè) 置 Picture 屬 性, 大 家 可 以 測 試 一 下 分 別 用LoadPicture、 或 直 接 將 位 圖 路 徑 寫 入 屬 性 的 效 果。 使 用LoadPicture 加 載 速 度 很 慢 而 且 位 圖 文 件 也 需 要 定 位, 使 用 直 接 寫 入 屬 性 雖 然 可 以 執(zhí) 行 時 脫 離 該 位 圖, 但 也 會 使 編 譯 后 的Exe 碩 大 無 比。
----3、關(guān)于注冊表
---- 注 冊 表 是 一 個 集 中 管 理 的 數(shù) 據(jù) 庫, 它 包 含 有 關(guān) 計 算 機 的 配 置、 硬 件 和 軟 件 的 各 類 信 息, 在 引 導(dǎo)、 系 統(tǒng) 初 始 化、 登 錄、 執(zhí) 行 程 序 等 進 程 中 被 用 到, 在Windows 環(huán) 境 下, 注 冊 表 已 經(jīng) 從 本 質(zhì) 上 代 替 了 所 有 基 于MS-Dos 的 配 置 文 件。
---- VB 可 以 使 用API 函 數(shù) 來 訪 問 注 冊 表。 實 際 上, 創(chuàng) 建 一 個 注 冊 表 文 件 比 編 寫 一 個 調(diào) 用API 的 進 程 在 注 冊 表 中 設(shè) 定 值 方 便 得 多, 這 是 因 為 所 要 做 的 僅 是 編 寫 包 含 注 冊 表 信 息 的ASCII 文 本 文 件, 然 后 運 行regedit.exe, 象 傳 遞 參 數(shù) 一 樣 傳 遞*.reg 文 件 名。
---- 4、 關(guān) 于DLL 傳 遞 參 數(shù)
----缺省時,VB默認按地址傳遞所有參數(shù),這就意味著傳遞的不是變量的值,而是一個32位的指向變量的指針。事實上可以發(fā)現(xiàn)大多數(shù)傳給DLL函數(shù)和子例程的參數(shù)都是按值傳遞,唯一例外的是傳遞字符串,數(shù)組和用戶自定義類型。因為缺省時VB變量按地址傳遞。因此要求以值傳遞參數(shù)時,必須用關(guān)鍵字By Val顯式聲明。
---- VB5.0 支 持 函 數(shù) 指 針 是 通 過Address Of 關(guān) 鍵 詞 的 使 用 來 實 現(xiàn) 的, 被 作 為 參 數(shù) 加 在 函 數(shù) 名 前, 用 以 指 明 傳 遞 函 數(shù) 或 子 例 程 的 地 址 給DLL 程 序。 但 是 一 般VB 的 程 序 員 都 不 使 用 函 數(shù) 指 針。
---- 5、 使 用 第 三 方 控 件
---- 合 理 使 用 第 三 方 控 件, 可 以 大 大 提 高 開 發(fā) 工 作 的 效 率, 不 必 為 一 些 重 復(fù) 勞 動 花 時 間, 并 使 軟 件 具 有 極 強 的 專 業(yè) 性。 但 是 必 須 如 果 在 自 己 的 商 品 軟 件 中 使 用 第 三 方 控 件, 一 定 要 注 意 版 權(quán) 問 題。
三、 測 試 與 調(diào) 試
---- 一 個 軟 件 能 否 成 為 好 的 商 品 軟 件, 測 試 和 調(diào) 試 起 著 關(guān) 鍵 作 用,Bug 重 重 的 軟 件 宣 傳 得 再 好 也 沒 有 用 的。 下 面 談 談 測 試 和 調(diào) 試 技 術(shù) 中 應(yīng) 注 意 的 地 方:
制 訂 測 試 計 劃。 有 了 測 試 計 劃, 才 能 確 保 應(yīng) 用 程 序 工 作 正 常。 軟 件 公 司、 開 發(fā) 機 構(gòu) 都 應(yīng) 該 更 加 自 己 的 實 際 情 況 制 訂 測 試 計 劃, 并 且 應(yīng) 該 權(quán) 衡 一 下 制 訂 合 理 測 試 計 劃 將 帶 來 的 好 處 與 所 花 時 間 之 間 的 關(guān) 系。 具 體 而 言, 可 以 用Word 或Excel 編 寫 一 個 簡 單 的 測 試 計 劃, 按 單 元 測 試、 整 體 測 試、 系 統(tǒng) 測 試 來 進 行, 還 應(yīng) 包 括 如 何 進 行, 諸 如 針 對 操 作 系 統(tǒng)、RAM 配 置、CPU 類 型、 外 設(shè) 類 型、 數(shù) 據(jù) 庫 類 型 的 不 同 來 進 行 測 試 等 等。 如 果 大 家 想 獲 得 關(guān) 于 軟 件 項 目 測 試 的 詳 細 資 料, 可 以 到http://www.microsoft.com/servad/msconsult.htm 看 看。
在 代 碼 中 使 用 大 量 的 注 釋 有 助 于 糾 正 錯 誤, 這 些 注 釋 不 隨 項 目 一 起 編 譯, 所 以 不 要 擔 心 過 多 的 注 釋 會 使 項 目 變 得 龐 大, 而 且 別 的 程 序 員 也 可 通 過 注 釋 來 讀 懂 你 的 程 序, 便 于 團 隊 工 作。 在 程 序 代 碼 中 使 用Option Explicit 關(guān) 鍵 字, 確 保 項 目 中 的 所 有 窗 體、 模 塊、 類 模 塊 中 的 所 有General Declarations( 通 用 聲 明 區(qū)) 都 有Option Explicit 關(guān) 鍵 字, 這 可 以 保 證 每 一 變 量 在 使 用 前 必 須 先 聲 明, 以 防 止 拼 寫 錯 的 變 量 將 被 認 為 是 新 的 變 量。
當 不 清 楚 過 程 為 什 么 不 按 設(shè) 想 的 方 式 工 作 時, 可 以 設(shè) 置 斷 點, 一 步 一 步 地 跟 蹤 執(zhí) 行 代 碼, 在 你 認 為 可 能 出 錯 的 地 方 設(shè) 置 斷 點, 如 果 不 能 確 定 問 題 所 在, 可 以 在 第 一 個 可 能 的 代 碼 行 上 設(shè) 置 斷 點, 而 對 于 那 些 注 釋 及 行 標 記 變 量 聲 明 所 在 的 代 碼 行 或 隱 藏 模 塊 行, 不 能 設(shè) 置 斷 點。
VB 不 能 在 應(yīng) 用 程 序 運 行 時 進 行 調(diào) 試, 但 是 可 以 在 代 碼 中 加 入 一 些 處 理 出 錯 的 代 碼 來 幫 助 調(diào) 試, 這 就 可 以 識 別 什 么 時 候、 什 么 地 方 出 了 什 么 樣 的 的 錯 誤 及 為 什 么 出 錯。
四、 制 作 安 裝 軟 件
---- 完 成 了 軟 件 測 試, 確 認 沒 有 錯 誤 之 后, 就 可 以 發(fā) 布 軟 件 了,VB 有 自 帶 的 應(yīng) 用 程 序 安 裝 向 導(dǎo), 許 多 人 可 能 認 為 需 要 一 些 自 己 定 義 的 安 裝, 那 么 請 看 下 面 部 分。
安 裝 向 導(dǎo) 生 成 程 序 的 缺 省 安 裝 目 錄 是 在 Program File 下 的, 要 修 改 該 缺 省 安 裝 目 錄, 只 要 打 開 已 經(jīng) 生 成 的 安 裝 文 件 Setup.1st 中[Setup] DefaultDir=$(ProgramFiles)\XXXXXX, 把$(ProgramFiles) 換 成 $(WinSysPath) 或 自 定 義 的 目 錄。
在 使 用 安 裝 向 導(dǎo) 時, 加 入 相 應(yīng) 的 文 件: 如Readme, 幫 助 文 件 等 可 以 修 改 Setup.lst 文 件 中 的[Files], 例 如 要 把 File1 放 到 程 序 組 中, 修 改File1 的 最 后 兩 項:File1 = .... "","" 改 為 -> File1 = .... " 程 序 項 名 稱"," 應(yīng) 用 全 路 徑"。
[Setup] 中 的 DefProgramGroup 為 組 名, 但 是 如 果 只 有 一 個 File 需 要 安 裝, 不 會 建 立 程 序 組。
---- 由 于 篇 幅 的 限 制, 對VB 的 類 的 使 用、 外 接 程 序、 動 態(tài) 鏈 接 庫、ActiveX 都 沒 有 具 體 談 到, 留 待 以 后 再 為 補 充( 以 上 程 序 均 在VB5.0 中 文 企 業(yè) 版 調(diào) 試 通 過)。