用VB設計能適應各種顯示屬性的介面

2021-04-17 08:49:16 字數 3058 閱讀 9027

用vb設計能適應各種顯示屬性的介面

**:

vb愛好者

---- 在 設 計 一 般 應 用 軟 件 時, 總 希 望 設 計 的 軟 件, 無 論 顯 示 器 分 辨 率 設 置 是640x480, 800x600 還 是1024x768, 無 論 顯 示 器 設 置 是 在 大 字 體 還 是 小 字 體 軟 件 都 能 正 常 運 行, 並 且 有 美 觀 一 致 的 界 面。 本 人 在 用

vb5.0 設 計《英 語 集 成 訓 練 系 統v2.0》時, 亦 遇 到 這 樣 的 麻 煩。 下 面 解 釋 克 服 這 一 問 題 的 方 法。

---- 一: 使 界 面 居 中

---- 為 了 使 界 面 元 素 能 在 各 種 顯 示 分 辨 率 下 均 有 合 理 的 布 局, 一 種 方 法 就 是 獲 取 當 前 顯 示 分 辨 率, 然 後 根 據 這 一 分 辨 率 計 算 界 面 各 元 素 的 位 置 和 大 小, 並 進 行 設 置。 這 種 方 法 雖 然 能 解 決 界 面 元 素 布 局 問 題, 但 需 要 知 道 每 個 元 素 的 位 置 和 大 小, 程 序 煩 瑣。

---- 我 這 裡 採 用 的 方 法 是: 首 先 設 計 一 個 具 有 極 大 化, 無 邊 界, 無 標 題, 無 控 制 盒 的 窗 體, 然 後 在 其 上 放 置 一 個 容 器 控 件picture, 在picture 中 再 放 置 其 它 控 件。 在 窗 體load 事 件 中 根 據 當 前 的 顯 示 分 辨 率 居 中picture, 從 而 實 現 了 居 中 整 個 界 面。 具 體 代 碼 如 下:

private sub form_load()

call centercontrol(picture1)

end sub

public sub centercontrol(obj as object)

dim cx, cy as single

cx =(screen.width/screen.

twipsperpixelx-obj.width)/2#

cy =(screen.height/screen.

twipsperpixely-obj.height)/2#

obj.left = cx

obj.top = cy

end sub

---- 二: 使 界 面 適 應 大 字 體 與 小 字 體

---- win95 在 創 建 控 件 時, 會 根 據 當 前 顯 示 屬 性 為 大 字 體 或 小 字 體 來 作 相 應 調 整。 盡 管 應 用 程 序 傳 送 的 參 數( 控 件 位 置 和 尺 寸) 是 一 致 的, 但 實 際 控 件 的 位 置 和 尺 寸 在 這 兩 種 情 形 下 並 不 一 樣。 如 果 應 用 程 序 僅 僅 考 慮 一 般 小 字 體 的 情 況, 在 大 字 體 下 界 面 則 十 分 難 看 混 亂, 甚 至 無 法 操 作。 為 解 決 這 一 問 題, 首 先 應 了 解 當 前 顯 示 器 設 置, 這 可 通 過 系 統 注 冊 表 來 獲 取。 下 面 的 程 序 採 用 了 另 一 種 方 法: 首 先 在 一 個 映 射 模 式 為pixel 的 窗 體 中 放 置 一 個 控 件, 在 顯 示 屬 性 為 小 字 體 的 設 計 環 境 下 首 先 看 一 下 控 件 的 初 始 位 置x,y, 然 後 在 窗 體 的load 事 件 中 計 算 出x 和y 方 向 的 放 大 比 例xfac,yfac:

private sub form_load()

xfac = 400# / mmlhwnd.left

yfac = 400# / mmlhwnd.top

end sub

---- 其 中,mmllhwnd 為 放 置 在 窗 體 中 的 控 件, 初 始 的 坐 標 為400,400。

---- 最 後 在 各 個 需 要 調 整 界 面 的 窗 體load 事 件 中 調 用 下 列 子 程 序, 調 整 各 控 件 的 位 置 與 大 小:

public sub correctform(fm as form)

dim c as control

for each c in fm.controls

if typeof c is timer then

elseif typeof c is commondialog then

elseif typeof c is line then

c.x1 = c.x1 * xfac

c.y1 = c.y1 * yfac

c.x2 = c.x2 * xfac

c.y2 = c.y2 * yfac

else

c.left = c.left * xfac

c.top = c.top * yfac

if typeof c is sscommand then

c.width = c.width * xfac

c.height = c.height * yfac

c.fontsize = c.fontsize * xfac

elseif typeof c is commandbutton then

c.width = c.width * xfac

c.height = c.height * yfac

c.fontsize = c.fontsize * xfac

elseif typeof c is listbox then

c.width = c.width * xfac

c.height = c.height * yfac

c.fontsize = c.fontsize * xfac

elseif typeof c is combobox then

c.width = c.width * xfac

c.fontsize = c.fontsize * xfac

end if

end if

next c

end sub

---- 上 述 程 序 中 僅 列 舉 了 幾 個 典 型 的 控 件, 如 果 窗 體 中 還 有 其 它 類 型 的 控 件, 仿 造 上 述 程 序 加 入 對 這 些 控 件 類 型 的 處 理 即 可。

用VB設計能適應各種顯示屬性的介面

並 且 有 美 觀 一 致 的 界 面。本 人 在 用vb5.0 設 計 英 語 集 成 訓 練 系 統v2.0 時,亦 遇 到 這 樣 的 麻 煩。下 面 解 釋 克 服 這 一 問 題 的 方 法。一 使 界 面 居 中 為 了 使 界 面 元 素 能 在 各 種 顯 示 分 辨 率 下 均 有...

適應各種終端裝置的自適應網頁設計

現在上網不再僅限於電腦,各種移動裝置如手機平板等正超過桌面裝置,成為訪問網際網路的最常見終端。於是,網頁設計師不得不面對乙個難題 如何才能在不同大小的裝置上呈現同樣的網頁?手機的螢幕比較小,寬度通常在600畫素以下 pc的螢幕寬度,一般都在1000畫素以上 目前主流寬度是1366 768 有的還達到...

用VB6 0設計簡易賽車遊戲

簡單的遊戲往往更耐玩,就比如伴我度過高考的賽車遊戲 一切都是方塊,所謂的賽車也只是四個方塊。第一步,繪製物件 用函式drawcar 畫賽車,drawway n 畫跑道的第n層。第二步,接受控制 form的keypreview屬性要設為true,在form keypress函式中通過改變全域性變數cx...