国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

在 運 行 時 刻 創 建 可 改 變 尺 寸 的 控 件

2024-07-21 02:24:11
字體:
來源:轉載
供稿:網友

商業源碼熱門下載www.html.org.cn

我 們 可 以 將 許 多 不 同 的 控 件, 例 如 文 本 框 控 件, 添 加 到visual basic 的 窗 體 上。 在 設 計 期 間, 可 以 調 整 控 件 的 大 小 和 位 置。 文 本 介 紹 如 何 從 一 個visual basic 應 用 程 序 中, 在 運 行 時 刻 修 改 這 些 控 件 的 尺 寸。
運 行 時 刻 重 設 控 件 的 尺 寸 ---- 當 設 計visual basic 應 用 程 序 時, 可 以 簡 單 地 按 照 需 要 將 控 件 添 加 到 窗 體 上, 例 如, 文 本 框 控 件 為 程 序 提 供 了 一 個 最 小 功 能 的 字 處 理 程 序 的 特 性。
---- 控 件 的 尺 寸 必 須 在 設 計 期 間 設 置。 然 而, 通 過 使 用 兩 個windows api 函 數:getwindowlong 以 及setwindowlong, 我 們 可 以 實 現 在 運 行 時 刻 改 變 一 個 控 件, 例 如 一 個 文 本 框 控 件 的 大 小。

---- 當 將 一 個 控 件, 例 如 一 個 文 本 框 控 件 添 加 到visual basic 應 用 程 序 中 時, 本 質 上 是 創 建 了 一 個 新 的 窗 口。 每 個 在windows 操 作 系 統 中 被 創 建 的 窗 口 都 具 有 某 種 與 之 相 關 的 風 格 屬 性, 例 如, 一 個 文 本 框 控 件 可 能 具 有es_multiline 的 窗 口 風 格。 這 告 訴windows 該 控 件 是 一 個 多 行 編 輯 控 件。

---- 通 常, 一 個 文 本 框 控 件 不 能 在 運 行 時 刻 被 重 設 大 小。 然 而, 通 過 改 變 控 件 的 風 格 屬 性, 用 戶 將 能 夠 在 程 序 運 行 期 間 調 整 文 本 框 的 物 理 尺 寸。

---- 這 可 以 通 過 調 用getwindowlong 和setwindowlong 函 數 來 完 成。 首 先, 調 用getwindowlong 函 數 以 提 取 該 文 本 框 控 件 當 前 的 窗 口 風 格 屬 性。 其 次, 可 以 使 用or 位 操 作 符 為 該 文 本 框 控 件 設 置ws_thickframe 屬 性。 一 個 具 有ws_thickframe 屬 性 的 窗 口 會 在 它 的 邊 界 繪 制 一 個 粗 框。 可 以 使 用 該 邊 框 來 改 變 窗 口 的 大 小。

---- 然 后 運 行setwindowlong 函 數, 它 告 訴windows 修 改 文 本 框 控 件 的 風 格 屬 性。

---- 最 后, 固 定 文 本 框 最 新 的 尺 寸, 以 便 它 的 新 位 置 和 尺 寸 被 注 冊 在 其 下 的 窗 體 中, 可 以 調 用setwindowpos 函 數 來 完 成 這 項 工 作。

樣 例 程 序 ---- 該 程 序 顯 示 了 在visual basic 中, 如 何 在 運 行 時 刻 創 建 一 個 可 變 大 小 的 文 本 框 控 件。
---- 1. 在visual basic 中 開 始 一 個 新 的 工 程, 采 用 缺 省 的 方 法 建 立form1。
---- 2. 將 如 下 常 量 和 聲 明 語 句 添 加 到form1 的 通 用 聲 明 部 分 中( 注 意 每 個 聲 明 語 句 需 要 被 書 寫 在 一 行 內):

---- private declare function getwindowlong lib "user" (byval hwnd as integer, byval nindex as integer) as long
---- private declare function setwindowlong lib "user" (byval hwnd as integer, byval nindex as integer, byval dwnewlong as long) as long
---- private declare sub setwindowpos lib "user" (byval hwnd as integer, byval hwndinsertafter as integer, byval x as integer, byval y as integer, byval cx as integer, byval cy as integer, byval wflags as integer)
---- const swp_nosize = &h1
---- const swp_nozorder = &h4
---- const swp_nomove = &h2
---- const swp_drawframe = &h20
---- const gwl_style = (-16)
---- const ws_thickframe = &h40000

---- 對 于32 位 環 境 下 使 用visual basic 5.0 的 用 戶, 需 要 將 如 下 聲 明 語 句 添 加 到form1 的 通 用 聲 明 部 分 中( 注 意 每 個 聲 明 語 句 需 要 被 書 寫 在 一 行 內):

---- private declare function getwindowlong lib "user32" alias "getwindowlonga" (byval hwnd as long, byval nindex as long) as long
---- private declare function setwindowlong lib "user32" alias "setwindowlonga" (byval hwnd as long, byval nindex as long, byval dwnewlong as long) as long
---- private declare function setwindowpos lib "user32" (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
---- const swp_nosize = &h1
---- const swp_nozorder = &h4
---- const swp_nomove = &h2
---- const swp_drawframe = &h20
---- const gwl_style = (-16)
---- const ws_thickframe = &h40000

---- 3. 在form1 上 添 加 一 個 命 令 按 鈕 控 件, 采 用 缺 省 的 方 法 建 立comand1。 將 它 的caption 屬 性 設 置 為“ 改 變 文 本 框 控 件 大 小”

---- 4. 將 如 下 代 碼 添 加 到command1 的 單 擊 事 件 中:

---- private sub command1_click()
---- resizecontrol text1, form1
---- end sub

---- 5. 在form1 上 添 加 一 個 文 本 框 控 件, 采 用 缺 省 的 方 法 建 立text1。

---- 6. 創 建 一 個 名 為resizecontrol 的 新 函 數, 將 如 下 代 碼 添 加 到 該 函 數 中:

---- sub resizecontrol(controlname as control, formname as form)
---- dim newstyle as long
---- newstyle = getwindowlong(controlname.hwnd, gwl_style)
---- newstyle = newstyle or ws_thickframe
---- newstyle = setwindowlong(text1.hwnd, gwl_style, newstyle)
---- setwindowpos controlname.hwnd, formname.hwnd, 0, 0, 0, 0, swp_nozorder or swp_nosize or swp_nomove or swp_drawframe
---- end sub

---- 按 下f5 來 運 行 該 樣 例 程 序, 單 擊 命 令 按 鈕, 可 以 將 文 本 框 的 大 小 按 照 需 要 進 行 改 變.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 偃师市| 寿宁县| 磐石市| 襄垣县| 寿阳县| 尤溪县| 开原市| 犍为县| 通江县| 唐河县| 收藏| 潮州市| 永济市| 峡江县| 鄂伦春自治旗| 阜宁县| 博白县| 施甸县| 富顺县| 鄂托克前旗| 海淀区| 石家庄市| 濉溪县| 菏泽市| 海门市| 章丘市| 潞城市| 台山市| 义乌市| 洪泽县| 汕尾市| 仁怀市| 鹤山市| 西林县| 青阳县| 盐城市| 林州市| 甘泉县| 九寨沟县| 根河市| 山东省|