用 Google 搜尋:

無聊人的無聊故事

五月 14 日, 2007

有時候覺得我的執念實在是很恐怖…

文章類別:瑣瑣碎碎 — by C.H.Weng @ 1:36 上午

一點點有關如何精確控制 HTML Application 視窗大小的心得……

為了調整 handy hiRadio 播放面板的視窗大小,能盡量適合各種不同的情況(Vista 樣式、XP 風格樣式、Windows 經典樣式)、不同的 DPI 設定(通常是 96、少數為 120、更少數為其他),在翻過 MSDN 確認沒有直接偵測的方式後,開始了一整個下午的實驗測試……

用 Virtual PC 先準備好我要的 Windows 環境,接下來就是實際嘗試怎麼配出適合所有環境的視窗大小。首先要個別量出各種模式下的標題列高度、選單列高度、實際可用範圍的高度,然後尋找其中的規則。

先是意外發現 screen.height - screen.availHeight 幾乎等於標題列的高度;接著選單高度也好搞定,只要根據與標準的 96 DPI 之間的差距做等比例的調整就好了。原則上常見的選單文字大小約為 18 ~ 20 px,然後再以 screen.deviceYDPI 取得系統 DPI 設定值,根據比例調整就可以了。

有了以上資訊之後,理論上只要再加上所需要的像素數,就可以精確定出視窗所需要的大小,並且滿足大部分不太誇張的視窗外觀設定。

不過事實上卻還有那麼一點出入,反覆推敲確定上述的算法應該沒問題,後來又找了半天,才發現也許問題是出在視窗邊框的粗細。可惜目前還沒想出可以得知邊框粗細的方法,所以還是沒能完美地解決這個問題。

然後,一個下午的時間就這樣整個消失掉了!

不管怎樣,現在 handy hiRadio 的調整已經差不多告一個段落了,一些很奇怪的小地方也盡量嘗試用某些很奇怪的方式來解決。沒什麼問題的話,這兩天應該就會正式發表新的版本,並且用來取代 2.1.4 這一系列的分支版本。

雖然這個新版本的容量變大不少(將近 100k),並且也打破原來只有一個檔案的極簡狀態。不過對比新加入的功能,我想這樣的犧牲是還算值得的。

敬請期待 :)

共有 7 條評論

  1. 辛苦了!
    這個真的是非常方便的東西!

  2. 真辛苦你了
    我也來推一把
    這個小東西確實很不錯
    加油

  3. 辛苦了,有在用這好東西的我也來回應一下..:)
    不過,變成不是一個檔的情況下,是指..需要安裝了嗎?
    不過還是挺期待新功能的..:P

  4. 若是常常有使用 Virtual Machine 的需求......
    可以考慮看看 VirtualBox
    http://www.virtualbox.org/

    效率比 VIrtualPC 高多了.....

  5. to 小毛:

    嚴格來講,這個新版確實需要安裝沒錯,不過我會分成含安裝程式的版本與不含安裝程式的版本來發表。

    如果是用不含安裝程式的版本,第一次執行的時候會提示需要安裝某個控件,只要按個確定就會自動裝好了,所以應該不會造成太大的困擾。

    因為接下來可能會有一陣子比較忙,所以我決定還是把新的 handy hiRadio 2.5.4 先放出來,請到 handy hiRadio Project 下載吧。

    to Simon:
    VirtualBox 我目前正在慢慢摸索中,不過效率方面暫時還沒有很明確的感受。

    目前只知道 Ubuntu 一類的 Linux 作業系統,要在 VirtualBox 下才能安裝;用 Virtual PC 的話畫面會花掉……

    至於 Windows 用起來倒是還沒感覺出有什麼差別。而且 VirtualBox 的 Snapshot 功能我一直用不順手,所以暫時還不會成為我的測試主力機。

    不過,我會持續注意這個優秀的免費開源軟體的 :D

  6. 算邊框粗細還不簡單, 拍圖>>小畫家貼上>>放大>>計算粗細

  7. 不簡單喔~因為程式自己不會做這些事情……

    目前的問題在於,沒辦法偵測使用者究竟是使用 XP 樣式或是 2000 以前的傳統樣式,然後這兩種樣式的邊框粗細又不一樣。

    所以目前只能用大概的方式,讓兩種模式看起來都不會太誇張。

發表評論

(必須輸入。)
(必須輸入,但不會公開。)
(選擇性輸入、公開資訊。)

不可以 使用 HTML 標籤;你 可以 使用 BBCode 標籤。
目前支援的標籤: b color email i img size strong u url。

Comment Preview
↑Meta↑
↑Authors↑
↓Search↓
↑Categories↑
↑Recent Posts↑
↓Most Popular Posts↓
↑Recent Comments↑
↓Recent Trackbacks↓
↓Archives↓
↓Themes↓
Powered by WordPress™
Valid RSS & Atom Feed