Tüm C ++ programlarım şu ana kadar komut satırı arayüzünü kullanıyor ve deneyime sahip olduğum tek dil GUI'leri desteklemeyen PHP.
Nerede C ++ grafik kullanıcı arabirimi programlama ile başlayabilirim? Nasıl oluşturabilirim?
Tüm C ++ programlarım şu ana kadar komut satırı arayüzünü kullanıyor ve deneyime sahip olduğum tek dil GUI'leri desteklemeyen PHP.
Nerede C ++ grafik kullanıcı arabirimi programlama ile başlayabilirim? Nasıl oluşturabilirim?
Yanıtlar:
Esasen, bir işletim sisteminin pencereleme sistemi, pencere oluşturmak veya pencereye bir düğme koymak gibi işleri yapmak için yapabileceğiniz bazı API çağrılarını ortaya koyar. Temel olarak, bir başlık dosyaları paketi alırsınız ve stdlib ve ile yaptığınız gibi bu içe aktarılan kitaplıklardaki işlevleri çağırabilirsiniz printf
.
Her işletim sistemi kendi GUI araç seti, başlık dosyaları paketi ve API çağrıları ve kendi işlerini yapma yöntemiyle birlikte gelir. Her yerde çalışan programlar oluşturmanıza yardımcı olan GTK , Qt ve wxWidgets gibi platformlar arası araç kitleri de vardır . Bunu her platformda aynı API çağrılarına sahip olarak, ancak yerel OS API çağrılarını çağıran API işlevleri için farklı bir uygulama yaparak başarırlar.
CLI programından farklı olacak olan hepsinin ortak bir yanı, olay döngüsü olarak adlandırılan bir şeydir. Temel fikir biraz karmaşık ve sıkıştırılması zor, ancak özünde, ana sınıfınızda / ana işlevinizde çok fazla cehennem olmadığı anlamına gelir:
Olaya dayalı programlama hakkında birçok kaynak vardır. JavaScript ile ilgili herhangi bir deneyiminiz varsa, aynı temel fikirdir, ancak siz, komut dosyasının olay döngüsünün kendisi veya hangi olaylar olduğunu kontrol edemezsiniz, tek işiniz işleyicileri yazmak ve kaydetmek.
GUI programlamanın genel olarak inanılmaz derecede karmaşık ve zor olduğunu unutmamalısınız. Seçeneğiniz varsa, gömülü bir web sunucusunu programınıza entegre etmek ve HTML / web tabanlı bir arayüze sahip olmak aslında çok daha kolaydır. Karşılaştığım tek istisna, Apple'ın Cocoa + Xcode + arayüz oluşturucu + öğreticileri, gördüğüm GUI programında yeni olan insanlar için kolayca en ulaşılabilir ortam olmasını sağlıyor.
Her biri kendi güçlü ve zayıf yönlerine sahip birçok ücretsiz taşınabilir GUI kütüphanesi vardır :
Özellikle Qt, başlamanıza yardımcı olacak güzel öğreticiler ve araçlara sahiptir. Zevk almak!
Ancak, Win32 API veya MFC gibi platforma özgü işlevlerden kaçınmanız gerektiğini unutmayın . Bu, sizi neredeyse hiçbir faydası olmayan belirli bir platformda gereksiz yere bağlar.
İşletim sisteminden bağımsız algoritma " Üç adımda C ++ 'da GUI uygulamaları oluşturma ":
Qt Creator'ı yükleyin
Yeni proje oluştur (Qt Widgets Uygulaması)
İnşa et.
Tebrikler, C ++ 'da ilk GUI'niz var.
Artık "Merhaba dünya" GUI uygulamasından daha karmaşık bir şey oluşturmak için birçok belgeyi okumaya hazırsınız .
"Örnek olarak Windows XP diyelim" yorumu düşünüldüğünde seçenekleriniz şunlardır:
Microsoft Windows için sürpriz olan Windows API'yı arayan API'si aracılığıyla işletim sistemi ile doğrudan etkileşim kurun . WinAPI için kesin başvuru Microsoft'un MSDN web sitesidir . Bunun için popüler bir çevrimiçi başlangıç dersi, Forger'ın Win32 API Programlama Eğitimi'dir . Bunun için klasik kitap Charles Petzold'un Programlama Pencereleri, 5. Baskı .
WinAPI'yi C ++ sınıfına saran MFC gibi platforma (hem işletim sistemi hem de derleyici açısından) özgü bir kitaplık kullanın . Bunun için referans yine MSDN'dir. Bunun için klasik bir kitap Jeff Prosise'nin MFC'li Programlama Pencereleri, 2. Baskı . Eğer CodeGear C ++ Builder kullanıyorsanız, buradaki seçenek VCL'dir .
GTK + (C ++ sarmalayıcı: gtkmm ), Qt , wxWidgets veya FLTK gibi bir çapraz platform kitaplığı kullanınbelirli bir işletim sisteminin API'sini saran Bunların avantajları, genel olarak, programınızın kaynak kodlarını değiştirmek zorunda kalmadan farklı işletim sistemleri için derlenebilmesidir. Daha önce de belirtildiği gibi, her birinin kendi güçlü ve zayıf yanları vardır. Hangisini kullanacağınızı seçerken göz önünde bulundurulması gereken bir nokta da lisanstır. Verilen örnekler için GTK + & gtkmm LGPL altında lisans, Qt tescilli seçenek dahil olmak üzere çeşitli lisanslar altındadır, wxWidgets kendi wxWindows Lisansı altındadır (wxWidgets Lisansı ile yeniden adlandırma) ve FLTK istisna dışında LGPL altındadır. Referans, öğretici ve / veya kitaplar için, ayrıntılar için her birinin web sitesine bakın.
Zaten şu anda bulunduğun yerdeyim, sanırım sana "cevap verebilirim".
Gerçek şu ki bir GUI yapmanın kolay bir yolu yok. GUI'ler platforma ve işletim sistemine özel koda oldukça bağımlıdır, bu nedenle pencere yönetimi API'larındaki hedef platform / OS belgelerinizi okumaya başlamalısınız. İyi olan şudur: Bu sınırlamaları ve soyut mimari farklılıklarını tek bir çoklu platform API'sında ele alan çok sayıda kütüphane vardır. Daha önce önerilenler, GTK ve Qt, bu kütüphanelerden bazılarıdır.
Ama bunlar bile biraz vardır çok yeni kavramlar, veri türleri, ad ve sınıfların çok tanıtılmaktadır beri karmaşık, bir kerede tüm. Bu nedenle, bazı GUI WYSIWYG editörü ile birlikte gelirler. GUI'lerle programlama yazılımını neredeyse mümkün kılar.
Özetlemek gerekirse, Microsoft Visual Studio gibi GUI geliştirme için ücretsiz olmayan "ortamlar" da vardır. Delphi deneyimi geçmişleri olanlar için Visual Studio daha tanıdık olabilir. GUI geliştirmeye başlamak için fazlasıyla yeterli olan Microsoft: Visual Studio Express tarafından sağlanan tam Visual Studio ortamına ücretsiz alternatifler de vardır .
"Basit" eğiticili bir web sitesi buldum: http://www.winprog.org/tutorial/start.html
C ++ ile bir .NET Windows GUI oluşturmak kolaydır.
MSDN'den aşağıdaki eğiticiye bakın . İhtiyacınız olan her şeyi (Visual C ++ Express) ücretsiz olarak indirebilirsiniz .
Tabii ki kendinizi .NET'e bağlarsınız, ancak sadece oynuyorsanız veya sadece bir Windows uygulamasına ihtiyacınız varsa iyi olacaksınız (çoğu insanın hala Windows'u var ... şimdilik).
FLTK kullanıyorum çünkü Qt ücretsiz değil. Ben wxWidgets seçmiyorum , çünkü basit bir Merhaba, Dünya ile ilk testim ! programı 24 MB, FLTK 0.8 MB yürütülebilir bir üretti ...