2008-09-27 26 views
6

我在尋找一個非常好的對話縮放工具類,將拉長,並根據需要爲屏幕大小縮小單個項目。斯蒂芬凱爾有一個很好的(DlgResizeHelper),它基本上以一定的比例調整一切,但我在尋找更聰明的東西。Windows的C++對話框縮放工具類

例如:

  • 圖標不應該調整

  • 單行文本框不應該垂直拉伸

  • 按鈕也許應該保持相同尺寸

基本上我在找東西o查看所有控件,找出一個靜態文本字段與下一個/下一個控件相關,並將它們錨定在一起,並以「智能」方式調整大型控件的大小,使其看起來不錯。

那裏有這樣的框架嗎?我一直在努力,但現成的東西可能會更好。

後續:我正在查看建議的解決方案。他們中的許多人都要求你在對話框中的每個控件上進行錨點定位。我正在尋找一些聰明的東西,能夠弄清楚錨點應該是什麼,如果猜測是錯誤的,可以手動錨定。似乎應該是可能的 - 大多數人會同意編輯字段旁邊的靜態文本字段應該錨定在一起。猜猜我幾乎在這裏尋找一個小AI :)

回答

1

你可以使用wxWidgets的。它完全取代MFC,是一個多平臺,併爲您提供基於佈局的對話機制。

0

終極工具箱MFC庫(CodeProject上的here)包括一個layout manager。我沒有用過它,但它看起來像是你想要的。

0

這是一個免費的解決方案也從CodeProject
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
這只是一個簡單的一套宏的對話框調整大小位置控制。

編輯 - 遵循OP的註釋。我不知道像MFC的QT/WX一般的sizer支持,它似乎也不像Winforms這樣的新框架中。
它是在QT/WX中,因爲它對於多平臺,其中的小部件可能具有不同的尺寸是必要的,這解釋了MS缺乏它的問題。但它對多語言端口也很重要,例如。德語取消的地方是30個字符。

0

你可以看一下Professional GUI我們使用我們的調整對話框控件的類庫。我認爲這是他們免費版本的一部分。

2

我用ResizableLib(也做PropertySheets和Pages)關閉CodeProject上,IIRC。您可以設置確定對話框和控件在對話框移動時如何調整大小或移動的定位點。

您可以設置每個控制2個錨,(左,右),這樣你就可以在其移動它們移動的對話框移動或調整它們的大小。它很容易理解,如果難以得到完全正確:)

0

我們使用CodeGuru中的CResize類自動調整所有控件的大小。你告訴你如何調整每個控件的大小,併爲你完成這項工作。

調整大小范例是指定在調整對話框大小時控件的每一側會移動多少。

SetResize(IDC_EDIT1, 0, 0, 0.5, 1); 
SetResize(IDC_EDIT2, 0.5, 0, 1, 1); 
當你有大量的對話框控件的

非常方便。

Source code

2

我已經嘗試了很多,終於在http://www.codeproject.com/KB/dialog/layoutmgr.aspx解決。它不會做你建議的'智能'佈局。我從來沒有在任何圖書館和任何平臺上看到過這種情況 - 我沒有看到如果沒有大量的魔法,無論如何都必須被覆蓋一半的時間,這種方法才能奏效。