2009-10-24 12 views
6

Windows 7'de olduğunuzu düşünün ve GRAPHIC uygulaması için bir GUI yazmanız gerekir (bir arazi düzenleyicisi, ağ görüntüleyicisi gibi). OpenGL (yerel C++ ile yazılmış). Amacınız çok platformlu bir yazılımsa, o zaman wxWidgets'a gitmelisiniz, ancak bir Windows 'tek uygulamasının yaptığınızı hayal edin ... seçiminiz ne olurdu? ve neden?WPF, wxWidgets, Win32 API ve MFC arasında seçim yapma

Uygulamanın hem XP, hem de Vista/7 üzerinde çalışacağını ve WPF durumunda UI'nin yönetileceğini varsayalım, fakat C++/CLI proxy benzeri bir sınıf tarafından yerel işlevleri çağıracaktır. yönetilen yerel ve yerel yönetilen neden performans sorunlarından "sıçrayan"?

cevap

21

RAD Studio da 2010 yılında Geliştirilmiş işi

  • yapabilirsiniz! Hızla bina, Microsoft Windows uygulamalar için VCL (Visual Bileşen Kütüphanesi) artık Windows Vista, XP ile sorunsuz Windows 7 desteği ve zarif geri dönüş uyumluluğu içerir ve 2000
  • 2010 yılında Geliştirilmiş! Windows Vista ve Windows 7 API başlıkları tam olarak en son Windows yeteneklerinden yararlanır
  • 2010'da yeni!Windows 7 Direct2D API desteği

da Sen Qt C++ API böyledir çünkü, hatta yalnızca Windows bir uygulama için, QT kullanmayı düşünebilirsiniz twinforms

+1

OP belirtilen C++, bu yüzden de RAD Studio'nun C++ Builder içerdiğine dikkat çekmeye değer. –

+1

Evet, bu soru C++ Builder ve VCL'yi çağırıyor gibi görünüyor. OpenGL kutudan desteklidir ve C++ Builder için DirectX kitaplıkları www.clootie.ru adresinde bulunabilir. –

2

, yönetilen yerel ve yerel yönetilen neden performans sorunlarından "sıçrayan" olacak? Eğer (genelde bir oyun,) sadece editörü yazma beri

kesinlikle ama bildiğim olarak DirectX alt sistem tarafından işlenen yaklaşık

WPF uygulamaları endişe gereken bir şey değil. Bu yüzden sadece DirectX kullanıyorsanız, iyi bir seçim olacaktır.

7

WPF, aslında, arayüz nesneler üzerinde efektler uygulamak için DirectX Gölgelendiricilerini kullanabilirsiniz (here 'sa CodeProject makale geliştirme unsuru ayrıntılarıyla) ve bunun için destek büyümeye devam edecektir, bu yüzden olarak WPF seçsin beklenmektedir bir geliştirme platformu. Ayrıca, makul bir çaba harcayarak çekici kullanıcı arayüzleri oluşturmaya odaklanıyor ve bence bu grafiksel bir uygulama için çok önemli.

+0

. Gecikme çok fark edilir. Aynı Şekiller ve diğer UIElements için de geçerli. Bu yüzden WPF'nin her zamanki GUI öğeleri için harika olduğunu düşünüyorum, ancak yüksek performanslı şeyler oluşturmaya gelince, düşük bir seviyeye göre interop. .. –

2

Kişisel olarak C++ uygulamasında Windows tabanlı uygulamalar oluşturmak için http://sourceforge.net/projects/win32-framework/ kullanırım. Aksi halde, VB.Net veya C# 'yu kullanıyorum çünkü hem kolayca hem de form tasarımcısı arasında kod geçişi çok faydalıdır.

2
 
MFC  :: Just say NO for any kind of project. 
Win32  :: Well, I can not really recommend using it. 
wxWidgets :: I have used it and seen no problem, good choice. 
WPF  :: I have not and never will use it as it is .Net bound. 
FLTK  :: Also look at http://fltk.org/, probably has better OpenGL support. 
+0

WPF/.NET Herhangi bir (yeni) "Windows 'sadece app" için en iyi seçenek. –

+1

@Dan: Çok sayıda yerli C++ kodu arayacağından bahsetmişti, bu yüzden teşekkür ederiz :-) – Malkocoglu

+3

@Dan - bu sadece yanlış. WPF kesinlikle * herhangi bir yeni * Windows uygulaması için en iyi seçenek değil. –

1

wxWidgets hakkında gerçekten yorum yapamıyorum, ancak WPF MFC ve iyi eski Win32 API'sine fazlasıyla üstün. WPF, render için DirectX'i kullanır ve bazı 3D support in WPF vardır. Ne yazık ki, bu destek hala bir hayli ilkel ve en performanslı değil. OpenGL'yi oluşturan bir Windows Forms denetimini (en azından bunu yaptığım son bir projede bunu yapmak zorunda kaldık) gerçekten daha iyi bir 3D performansı elde edebilirsiniz. Bir WPF uygulamasında 3D render yapmak istiyorsanız, XNA Çerçevesine bir göz atabilirsiniz. .NET çerçevesinin bir sonraki sürümü de WPF'ye iyileştirmeler içerecek ve eminim 3D için daha iyi destek olacak.

12

C++ becerilerinizden memnunsanız, WTL'yi öneririm. Çok hafif ve yağsız makine koduyla sonuçlanır. Google Chrome was written with WTL'un Windows sürümü.

+2

bunun neden reddedildiğinden emin değil, önerilen bir meşru cevaptır. +1 –

7

ile Delphi Prism ve WxWidgets ile WPF yapabilirsiniz güzel bitti. Qt supports OpenGL ve DirectX ile birlikte kullanılabilir.

+0

QT Direct2D ve DirectWrite kullanıyor mu? – Royi

9

Geliştirme süresini en aza indirmek ve performansı en üst düzeye çıkarmak için Delphi 2010 (Rad Studio 2010) ile kesinleşirim. Windows 7 Direct2D API ile yerel yürütme, doğrudan arabirimler ve tartışmasız Windows 7'de bulunan en iyi IDE/Geliştirme ortamlarından birine sahip olursunuz. Başka ne istiyorsunuz?

Larry Drews TheSoftwareRonin

2

(Nullsoft/Winamp şöhretin Justin Frankel başkanlığında) Cockos ekibi tarafından WDL ("whittle") kontrol ettiğinizden emin olun.

"WDL Sanal Pencere sistemi" içeren son derece hafif C++ kitaplığı.

Şahsen kullanmadım ama onunla yapılmış harika bir yazılım için kefil olabilirim. Son derece verimli ve hafif uygulamalar.

Bağlantı: Görsel katmanını kullanarak özel çizilmiş nesneleri render WPF ile korkunç deneyimleri yaşadım WDL

İlgili konular