2013-07-20 115 views
0

我正在開發一個輕量級的GUI工具包。它被設計成在X11(xlib),Win32以及其他可能支持非常基本的GUI的系統中易於移植。什麼是GUI工具包更好的體系結構?

據我所知,主要有兩種可能的架構:

  1. 要使用操作系統提供窗口服務 - X11在Linux和正常的Windows在Win32中。在這種方法中,每個控件都是與其父對象相同的窗口對象。它接收來自操作系統的事件並對其進行處理,並擁有自己的繪畫表面等。

  2. 使用操作系統提供的窗口僅用於頂層窗口 - 主應用程序窗口,對話框等。所有子窗口都是簡單的畫在其父窗口的表面上。在這種情況下,工具箱必須管理父子關係,事件只能由主窗口接收並且必須分派給控件。

什麼變種使用廣泛的GUI工具包? Qt的? wxWidgets的? FLTK?其他?他們爲什麼選擇這種方法?

這兩個變體如何與結果GUI工具包的大小和速度相關?

+0

的問題是編輯。 – johnfound

+1

喜歡第一個原因的原因是*非常難以獲得原生控件的所有細微差別。例如,發光效果懸停。即使是Qt,經過了所有的開發工作,在Windows或OS X(它使用第二種方法)上都無法正確使用它們。所以不,第一個遠沒有過時。但第二個確實有一些優勢,比如給你最終控制權的方式。 –

+0

這個問題已經最小化了,希望能夠重新開放。 :) – johnfound

回答

1

我還無法發表評論,但我強烈反對現在進入X,或多或少兩年Wayland(或Mir,也許)將成爲Linux的主要渲染管理器。

我認爲第一種方法的主要問題是:

  • 你必須讓這兩個系統的完美的知識(X &的Win32(爲什麼不可可爲OS X)?)
  • 如果X在某處更改了一些實現細節,則必須更改代碼才能將其考慮在內,而如果只使用頂層的東西,則更改的可能性較小。
  • 可能會有成噸的重複代碼(例如:對於Win32和X ...處理複選框)
+0

相反,我不同意。在Wayland成爲主流之後,X Window System將會繼續生存下去,因爲有許多unix口味,商業口味,可能永遠不會走Wayland的路。如果他不想支持UNIX系統,那麼Wayland可能是一個很好的選擇,否則他將不得不支持X - 這將是必須的。 – DejanLekic

+0

此外,還有像EGLX這樣的項目可用於在Wayland上運行X應用程序。 – MauganRa