2011年10月20日 星期四

使用者圖形介面程式之設計

使用者圖形介面程式之設計
張東瀛 
 
原載 自動化科技 1996 年 3 月 p.13-17


壹﹑前言

二十世紀九十年代是一個令人振奮的時代. 因為個人電腦已經深入工業社會, 學校和一般家庭. 使用電腦的人終於明白,電腦確實可以協助人們把工作做得更 快,更好,更省力氣. 然而回顧三十年來電腦科技的發展過程,不難發現,電腦雖然 普及,使用效率卻不如預期. 軟硬体快速更新,不但縮短設備使用年限,又讓使用 者付出更多學習時間. 即使新一代的電腦功能更強,更具親和力,它畢竟不像電視 機那麼容易操作. 對一般人而言,想讓電腦成為好幫手,仍須經歷一段艱苦的學習 歷程.

七十年代,只有專業人員才懂得使用電腦. 大部分程式都有專屬機器和用途. 軟体幾乎是針對特定程序設計. 因此電腦從業人員必須接受一系列專業訓練;諸如 基本電腦原理,程式語言,演算法或系統分析等. 換句話說,使用電腦的人幾乎都是 程式設計師. 到了八十年代,個人電腦開始流行,一般人可以自行操作電腦. 雖然 機器相當簡陋,軟体也不太多,套裝程式的開發仍在起步階段,投入個人電腦工業 的人力和物力卻相當驚人,因而刺激軟硬体工業的蓬勃發展.

八十年代末期,媒体儲存技術突飛猛進,套裝應用軟体的開發,猶如雨後春筍. 此一現象對傳統的電腦教育和學習方法,當有深遠影響. 學院教育有了顯著改變, 市場導向成為主流,一般使用者也逐漸擺脫「想用電腦,先上基本電腦概論,再學程 式設計」的夢魘. 文書處理,資料庫,電腦網路加上多媒体,只要學會開機,執行程 式,便能自己練習. 一旦熟習各項指令操作,何妨開班授徒,稍有心得,亦可出書上 市. 學習個人電腦,一時蔚為風潮.

九十年代,人機介面成了個人電腦軟体爭霸戰的重頭戲. 不論蘋果或 IBM 相 容 PC 莫不朝著人性化使用者圖形介面的目標邁進. 早先麥金塔的堀起和今日 WINDOWS 風光地分庭抗禮,即是一例. 電腦知識普及,硬体功能增強,軟体親和性高 ,使得電腦不再是少數人專用的工具. 在可以預見的未來,不僅是新新人類,恐怕連 銀髮族都將是電腦族的成員.

貳、DOS 與 WINDOWS

用慣麥金塔的人,冷眼旁觀 WINDOWS 作業環境的發展,難免會有類似「鄰家 小孩學步」的感覺. 平心而論, WINDOWS 和 DOS 的糾葛,雖是微軟試圖開發新一 代作業系統的絆腳石,從另一個角度觀察,十幾年來 DOS 累積的資源卻是 WINDOWS 緩步攻堅的支柱. 從 WINDOWS 95 隱藏 DOS 可知微軟充分了解此一觀點.

WINDOWS 仍有缺失,DOS 卻非一無可取. 撇開已發展的軟体資源不談,DOS 的 批次檔,仍是許多電腦族難以割捨的利器. 就應用程式的管理而言, WINDOWS 比 DOS 容易操作是事實. 即使很多人知道, DOS 的批次檔功能可以設計文字選單來 執行特定程式. 然而文字選單畢竟比較單調,總不若滑鼠點選圖像來得多彩多姿, 更何況應用軟体一多,文字選單便有捉襟見肘之虞. 只是 WINDOWS 內雖有 PIF 檔 可執行 DOS 程式,感覺上卻有點拖泥帶水. 魚與熊掌若要兼得,不知如何是好?

本文將敘述以批次檔,結合圖形介面和音效,並利用滑鼠操控方式設計一個涵 蓋 WINDOWS 和 DOS 應用軟体的使用者圖形介面.

參﹑程式設計之目標,特色,設備需求及工具
    設計目標: 提供一個簡潔明白,易於操作的軟体人機介面

        特色: 整合中英文字,圖形,音效分別管理 WINDOWS 及DOS 應用軟体

    設備需求: 80486 以上,IBM 相容 PC
              4 MB 主記憶体
              SVGA (1 MB 記憶) 圖形界面卡,彩色顯示器
              硬碟,滑鼠

    作業系統: MS-DOS 5.0 以上版本

    選項配備: 聲霸卡 2.0 或 PRO (可加音效)
              倚天中文碟版 V 3.0 或 V 3.5 16x16 字形檔

    軟体工具: BASIC,C,PASCAL 或其他高階語言均可
              Mouse 驅動相關程式庫
              圖形檔解碼器或程式庫
              聲霸卡程式發展工具 SBSIM
              繪圖程式 Dr. Halo IV 或其他類似軟体
              一般文書編輯器




肆﹑程式設計概要

    1. 設定變數及陣列,存放應用程式標題說明文字字串,滑鼠點選範圍座標值,
       WINDOWS 應用程式執行檔或 DOS 應用程式批次檔檔名

    2. 圖形檔解碼及顯示副程式
           由於多數高階語言只提供 640x480 解析度圖形,因此必須藉助
       PCX 或 GIF 圖形解碼程式或程式庫來設計高解析圖形顯示副程式,以
       便執行 1024x768x256 色圖形顯示功能. 此外,若須使用數張圖形介面
       還要加上圖形換頁功能

    3. 滑鼠座標偵測,捕捉及顯示副程示
           當滑鼠移動時必須在螢幕顯示 X,Y 座標值,若滑鼠移至圖像位置或
       驅動指令預設範圍,則偵測是否按鍵點選,以便執行指定的應用程式

    4. 應用程式標題顯示副程式
           每一應用程式除了用圖像代表以外,也可加上中英文說明. 此副程式
       可從 EXPROG?.WIN 檔讀取程式說明,再依照中英文 ASCII 碼轉換成16x16
       字形,當滑鼠移至圖像位置即於螢幕下方顯示相關應用程式標題說明

    5. 應用程式執行副程式
           當滑鼠點選某一圖像時,系統即呼叫此副程式執行相關 WINDOWS 應用
       軟体或執行 DOS 應用程式的批次檔,並將現在的磁碟目錄名稱存入變數,
       等到應用程式執行完畢,再返回原來的目錄. 為了確保應用程式得以順利
       執行,必須將介面程式轉存於延伸記憶体,以便釋放最大傳統記憶供應用程
       式使用. 如果應用程式無法執行,也能返回介面程式.

    6. 音效播放及中斷副程式
           應用聲霸卡程式發展工具 SBSIM (隨卡附贈軟体),提供 CMF,VOC,
       MID 三種音效檔播放及中斷背景音樂的功能. VOC 檔並可選擇從磁碟讀取
       或從延伸記憶体讀取音效資料的方式.


伍﹑圖形介面製作及操作說明

    程式設計好了以後,就可進行圖形介面檔案製作.

    一、介面圖形檔製作

        首先用繪圖軟体製作一張集合常用軟体圖像(icon)的圖片,然後以 PCX
    (或 GIF) 格式存入 EXPROG1.PCX, 並以圖像面積作為滑鼠點選範圍.通常把
    軟体圖像依照 Windows 和 DOS 兩類分別存放,並將各軟体圖像的邊限座標
    記錄備用.

        圖檔大小和樣式可依個人品味自行設計. 建議包含下列元件:
            WINDOWS 方框
            DOS 方框
            上下頁選擇方框
            結束方框

請參考圖(一) EXPROG1.PCX 說明



.



    二、視窗文字檔製作

        視窗文字檔提供程式所需相關變數資料. 建構視窗檔可用一般文書編輯
    器進行編輯,再以 EXPROG1.WIN EXPROG2.WIN .... 命名.
        每列文字包含"程式標題",滑鼠點選範圍(軟体圖像)的邊限座標 X1,Y1,
    X2,Y2 及"程式執行檔" (DOS 應用程式則用BAT檔),標題和程式執行檔必須
    用 " 括起來. 例如

    "Dr. Halo IV 繪圖程式",581,181,608,210,"DH.BAT"
    "PSP 影像處理器",190,266,223,296,"win e:\Psp\psp.exe"
    ....... 可視應用軟体多寡自行添加
 
        標題可設定為 100 個字元(50 個中文字)以內,每個視窗檔最多可存入
    99 個應用程式資料. 批次檔 DH.BAT 必須存放於經由 PATH 定義的子目錄內
    (例如 D:\TITES). WINDOWS 應用程式執行檔可從 WINDOWS 的檔案選單中的
    內容選項查出.

        最後將 EXPROG1.PCX 和 EXPROG1.WIN 存放於 D:\TITES 子目錄.
    如有必要可依序建立 EXPROG2.GIF EXPROG2.WIN, EXPROG3.GIF EXPROG3.WIN
    ... 備用.

    三、執行
        程式一執行,會顯示圖形介面. 因此可在 AUTOEXEC.BAT 設定讓電腦開機
    後就進入介面程式. 再以滑鼠左鍵點選所需的程式圖像便可直接執行指定的
    應用程式.
        應用程式執行完畢後,系統會回到圖形介面等候下一個指示. 點選螢幕
    Windows 區域或 DOS 區域左上角方框,可結束介面程式,返回作業系統.

        執行外部程式過程若有呼叫常駐程式佔用記憶体時,則在應用程式執行
    完畢後應先釋放常駐程式所佔用的記憶体(建 BAT 檔時應特別注意),否則會
    造成介面程式遭覆疊而不能回復的現象.


陸﹑聲霸卡 SBSIM 安裝及設定

若要讓介面程式有登場音效,來一段自己喜歡的音樂,或用語音指示使用者
如何操作電腦,可利用音效檔添加介面效果.

    音效檔需命名為 EXPROG1.VOC (或 CMF,MID 視種類而定), EXPROG2.VOC ..
音效播放,除了必須安裝聲霸卡以外,尚需執行聲霸卡的程式發展工具 SBSIM.
SBSIM 是一個常駐程式,它提供某些音效驅動程式的基本聲音輸出功能.

    安裝 SBSIM 所需檔案如下: (可自聲霸卡所附軟体取得)

        SBFMDRV.COM
        SBMIDI.EXE
        SBSIM.COM
        CTVDSK.DRV
        SBSIM.CFG

    一﹑SBSIM 功能設定
            由於 SBSIM 佔用不少記憶体,因此最好修改 SBSIM.CFG 的內容
        以便配合應用程式不同的記憶体需求.

        舉例說明兩種 SBSIM.CFG 設定方式

        (1) SBSIM.MEM 檔 (用文書編輯器編好後和 SBSIM 檔案存同一目錄)
            ; 可播放 VOC 及 MIDI 檔
            ; 只能從延伸記憶体讀取音效資料,使用最少的記憶
            ;[FM] (若用 CMF 檔,則將 ; 去除)
            ;BufferSize=32 (若用 CMF 檔,則將 ; 去除)

            [DskVoice]
            DMABufferSize=8
            BufferSize=24

            [Midi]
            BufferSize=32
            MidiMap=2               ; 0:General  1:Base  2:Extend

        (2) SBSIM.DSK 檔 (用文書編輯器編好後和 SBSIM 檔案存同一目錄)
            ; 可播放 VOC 及 MIDI 檔
            ; 可從磁碟或延伸記憶体讀取音效資料,佔用較多記憶体

            ;[FM] (若用 CMF 檔,則將 ; 去除)
            ;BufferSize=32 (若用 CMF 檔,則將 ; 去除)

            [DskVoice]
            DMABufferSize=8
            BufferSize=24

            [MemVoice]
            DMABufferSize=8
            ExtendedMemory=on
            SBSIMhandles=10

            [Midi]
            BufferSize=32
            MidiMap=2               ; 0:General  1:Base  2:Extend

    二﹑SBSIM 安裝及去除

            為了靈活應用 SBSIM 各項功能,可以依應用程式的記憶体需求選擇
        適當的批次檔來安裝 SBSIM

        (1) 可從磁碟或延伸記憶体讀取音效資料的 SBD.bat
            @echo off
            C:  (假設聲霸卡檔案放在 C:\SBPROI)
            cd\sbproi
            rem lh sbfmdrv  (若用 CMF 檔,則將 rem 去除)
            c:\sbproi\sbmidi /E  (執行 MIDI 播放常駐程式)
            copy c:\sbproi\sbsim.dsk c:\sbproi\sbsim.cfg
            sbsim

        (2) 只能從延伸記憶体讀取音效資料的 SBM.bat
            @echo off
            c:  (假設聲霸卡檔案放在 C:\SBPROI)
            cd\sbproi
            rem lh sbfmdrv  (若用 CMF 檔,則將 rem 去除)
            c:\sbproi\sbmidi /E  (執行 MIDI 播放常駐程式)
            copy c:\sbproi\sbsim.mem c:\sbproi\sbsim.cfg
            sbsim

        (3) 去除 SBSIM,釋放 SBSIM 所佔用的記憶的 SBU.bat
            @echo off
            c:
            cd\sbproi
            sbsim /U    (注意此處,後執行的程式記憶先釋放)
            sbmidi /U   (注意此處,先執行的程式記憶後釋放)
            d:

            應用程式若有安裝 SBSIM 音效,必需在執行應用程式的批次檔內呼叫          SBU.bat, 當應用程式執行完畢,便可釋放 SBSIM 所佔用的記憶.


柒﹑製作 EXPROG1.WIN 所需應用程式批次檔範例

    一﹑執行 PE2 文書編輯器的例子 PE2.BAT

        @echo off
        call Et3.bat  (呼叫倚天中文系統)
        d:            (假設 PE2 存放於 D:\pct)
        cd\pct        (進入存放 PE2 的子目錄)
        pe2.exe       (執行 PE2 應用程式)
        call Q.bat    (呼叫釋放倚天中文系統所佔記憶的批次檔)

        Q.bat 內容如下:
        @echo off
        D:\ET3\ETCTL/c: IQ

    二﹑執行 TITES 多媒体管理系統的例子 VKMDB.BAT

        @echo off
        call SBD.bat  (呼叫 SBSIM 設定批次檔)
        d:
        cd\timdb
        vikon         (執行 TITES 多媒体管理程式)
        call sbu.bat  (呼叫釋放常駐程式的批次檔)


捌﹑結語

一枝畫筆,幾樣顏料可以在帆布上塗出美麗的色彩; 許多無價的藝術品往往 用最簡單的工具創作出來. 面對日新月異的電腦科技,我們似乎也該坐下來,喘 口氣,思考一下如何把手邊的工作做好,而不應汲汲於將有限的資源用來追逐功能 更強,速度更快的硬体,或是馬不停蹄地拷貝最新的軟体.

建立應用程式圖形介面的目的在於提供使用者一個方便執行應用程式的工 具. 換句話說,由具有電腦使用經驗者應用此一人機介面,協助初學者規劃應用 程式執行環境,不但可以簡化執行程序,也能達到有效管理電腦的目的.

本文所敘述的程式,曾用於 TITES 多媒体雙語教學系統 (自動化科技 110 期, 一九九三年五月 p.95-p.106) 的外部應用程式介面. 有興趣的讀者,不妨 參考本文敘述的方法,自行設計能夠展現個人風格的介面程式.