為各種主機環境程式設計

2022-03-26 01:27:43 字數 3405 閱讀 2234

由於windows環境本身的特性,有很多因素隨使用者偏愛或配置而不同。下列因素會影響發

布到其他計算機的應用程式:

· 螢幕解析度和顏色濃度。

· 字型。

· windows版本。

· 輔助應用程式。

· dll位置。

一、 螢幕解析度和顏色濃度

windows桌面的大小和計算機上可用的顏色數是可配置的並依賴於安裝的硬體。在開發程

序的計算機上的這些屬性有可能與那些在發布的計算機上的對應屬性不同。在設定了不同屏

幕解析度的計算機上,應用程式的外觀(視窗、物件及字型大小)可用下列方法被處理:

· 為有最低解析度(通常為640×480)的使用者設計應用程式。不用採取特殊動作動態縮放對

象,使之根據計算機螢幕顯示改變比例。在視覺上,設定更高解析度後物件將變小。

· 在開發計算機上使用任意螢幕解析度設計,並且在執行時動態縮放所有的窗體和物件以適

應開發和發布計算機的螢幕解析度之間的差別(螢幕解析度差別比率)。

· 在開發計算機上使用任意螢幕解析度設計,並且在執行時僅動態縮放應用程式的窗體。根

據可視控制項在窗體中的位置,這可能需要窗體可滾動,以便使用者能訪問在窗體上所有控制項。

1)不動態縮放時的考慮

如果組成應用程式的窗體和可視控制項不在執行時動態縮放,應使用最低解析度設計應用

程式的單元。否則,應用程式在一台設定的螢幕解析度比開發計算機低的計算機上執行時,

應用程式的窗體可能超出螢幕的邊界。

例如,如果開發計算機設定螢幕解析度為1024×768,窗體的寬度設計為700畫素,那麼

在一台螢幕解析度設定為640×480的計算機上,窗體將不會全部顯示在windows桌面之內。

2)動態縮放窗體及控制項時的考慮

如果應用程式的窗體和可視控制項可動態縮放,需調整縮放程序各個方面以在所有可能的

螢幕解析度下保證應用程式具有最佳外觀。下面是動態縮放應用程式的可視單元應考慮的一

些因素:

· 根據開發計算機與要把應用程式安裝到其上的計算機的螢幕解析度,計算窗體和可視控制項

縮放的比例。使用常數代表開發計算機上螢幕解析度的大小:可以是以畫素計算的高度或寬

度。在執行時使用tscreen::height或tscreen::width屬性獲取使用者計算機的對應數值。用開

發計算機的值除以使用者計算機的值匯出在兩台計算機之間的螢幕解析度差別比例。

· 通過減少或增加單元的大小和改變其在窗體上的位置縮放應用程式的可視單元(窗體和控

件)。縮放按開發和使用者計算機的螢幕解析度之間的差別比例進行。縮放和重定位窗體上的

可視控制項可通過將窗體的tcustomform::scaled屬性設為true並呼叫其twincontrol::scaleb

y方法自動進行。scaleby方法不會改變窗體的高度和寬度。需自行用螢幕的height和width屬

性當前值乘上解析度差別比例。

· 可以不使用twincontrol::scaleby方法自動縮放,而通過在迴圈引用每個可視控制項中並設

置其尺寸和位置自行縮放窗體上的控制項。用可視控制項的height和width屬性值乘上螢幕解析度

差別比例。用可視控制項的top和left屬性值乘上螢幕解析度差別比例重定位可視控制項。

· 如果設計應用程式的計算機設定了比使用者計算機低的螢幕解析度,字型大小將在按比例縮

放可視控制項的程序中被減小。如果在設計時字型大小已經太小,在執行時字型可能會被縮小

到不可讀。

例如,窗體的預設字型大小是8。如果開發計算機的螢幕解析度為640×480而使用者的計算

機為1024×768,可視控制項尺寸將按0.625的比例減小(640/1024=0.625)。原來的字型大小

8被減小為5(8×0.625=5)。當windows以減小的字型大小顯示應用程式的文字時會擠在一起

並且不可讀。

· 有一些可視控制項,如tlabel和tedit,當控制項的字型大小變化時會動態地縮放。當窗體和控

件動態縮放時,這會影響發布應用程式。控制項除根據螢幕解析度差別比例縮放外,還會因字

體大小變化而縮放。這種效果可以通過將這些控制項的autosize屬性設為false來禁用。

· 避免使用顯式的畫素座標,例如當直接在畫布中繪製時。應按開發和使用者計算機之間的屏

幕解析度差別比例相應修改座標。例如,如果應用程式在畫布中繪製乙個高10個、寬20畫素矩

形,應分別把10和20乘上螢幕解析度差別比例。這可確保矩形在不同的螢幕解析度下看起來顯

得大小一樣。

3)調整顏色濃度變化

要考慮所有的沒有設定相同的可用顏色數的發布計算機,最安全的方法是在圖形中使用最

少的顏色數。尤其是對glyphs控制項,它通常只應使用16色的圖形。要顯示影象,可以按不同的

解析度和顏色濃度提供影象的多個拷貝或在應用程式中解釋最小解析度和顏色要求。

二、字型

windows附帶標準的truetype和點陣(raster)字型集。當設計需要發布到其他計算機上

的應用程式時,應考慮到不是所有的計算機都有windows標準字型集之外的字型。應用程式使

用的文字元件都應該使用在所有的發布計算機上都可用的字型。當應用程式絕對必要使用非

標準字型時,需要將那種字型與應用程式一起發布。安裝程式或應用程式本身必須在發布計

算機上安裝字型。第三方字型的發布應服從於字型開發者作出的限制。windows有一項安全措

施來處理試圖使用計算機上不存在的字型。它用匹配最好的現存字型來代替。這可以繞過有

關找不到字型的錯誤,但結果可能會損害應用程式的可視外觀。在設計時最好為這種偶然事

件做好準備。要使應用程式可以使用非標準字型,使用windowsapi函式的addfontresource和

deletefontresource。並將非標準字型的.fot檔案與應用程式一起發布。

三、windows版本

當使用windowsapi功能或通過應用程式訪問windows作業系統的區域時,可能在windows的

版本不同的各個計算機上有些函式、操作或區域不可用。例如,服務僅對windowsnt作業系統

適用。如果應用程式是作為一種服務或與服務有關時,應用程式安裝在windows95下將會失敗。

對這種可能性,可有一些選擇:

· 在應用程式的系統要求中指定應用程式可執行的windows版本。只在相容的windows版本下

安裝並使用應用程式是使用者的責任。

· 當應用程式安裝時檢查windows的版本。若遇到不相容的windows的版本,或者暫停安裝進

程或至少向使用者提出警告。

· 在執行時,就在執行乙個不是對所有的版本都適用的操作前檢查windows版本。如果是一

個不相容的windows版本,則放棄程序並警告使用者。或者,根據windows的不同版本提供不同的

**。有些操作在windowsnt在windows95的執行是不同的。使用windowsapi函式getversion

ex來確定windows的版本。

程式設計正規化 以炒菜為例,講解各種程式設計正規化

過程式程式設計 生活的經驗告訴我們以下的物理現實,事情是按照時間的順序乙個步驟接乙個步驟的發展。程式設計裡有乙個正規化就模擬了這樣的經驗,就是過程式程式設計。如果現在有一些剛從超市買回來的菜,要吃進肚子,按照過程式程式設計,可以如下表示 洗 菜 切 菜 炒 菜 吃 菜 以上的 中,括號外為動詞,括號...

各種程式設計風格

在過去的n年中,我遇到了很多使用囧然不同風格的開發者,下面是我所知道的一些,你還知道其它的嗎?散彈槍程式設計 這種程式設計風格是一種開發者使用非常隨意的方式對待 嗯,這個方法呼叫出錯了 那麼我會試著把傳出的引數從false變成true 當然依然出錯,於是我們的程式設計師會這樣 好吧,那我就注釋掉整個...

各種程式設計競賽

noi national olympiad in informatics 全國青少年資訊學奧林匹克競賽由ccf china computer federation 舉辦,此系列由下面幾個賽事組成 icpc international collegiate programming contest 是由...