转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB5.0 设计适应显示属性的界面         ★★★★

VB5.0 设计适应显示属性的界面

作者:闵涛 文章来源:闵涛的学习笔记 点击数:782 更新时间:2009/4/23 14:58:40
   在 设 计 一 般 应 用 软 件 时, 总 希 望 设 计 的 软 件, 无 论 显 示 器 分 辨 率 设 置 是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

上 述 程 序 中 仅 列 举 了 几 个 典 型 的 控 件, 如 果 窗 体 中 还 有 其 它 类 型 的 控 件, 仿 造 上 述 程 序 加 入 对 这 些 控 件 类 型 的 处 理 即 可

156


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台