मेरे सभी C ++ प्रोग्राम अब तक कमांड लाइन इंटरफेस का उपयोग कर रहे हैं और मेरे पास केवल दूसरी भाषा है जिसका अनुभव PHP है जो GUIs का समर्थन नहीं करता है।
मैं C ++ में ग्राफ़िकल यूज़र इंटरफ़ेस प्रोग्रामिंग के साथ कहाँ से शुरू करूँ? मैं एक कैसे बनाऊँ?
मेरे सभी C ++ प्रोग्राम अब तक कमांड लाइन इंटरफेस का उपयोग कर रहे हैं और मेरे पास केवल दूसरी भाषा है जिसका अनुभव PHP है जो GUIs का समर्थन नहीं करता है।
मैं C ++ में ग्राफ़िकल यूज़र इंटरफ़ेस प्रोग्रामिंग के साथ कहाँ से शुरू करूँ? मैं एक कैसे बनाऊँ?
जवाबों:
अनिवार्य रूप से, एक ऑपरेटिंग सिस्टम की विंडोिंग प्रणाली कुछ एपीआई कॉल को उजागर करती है जिसे आप विंडो बनाने या विंडो पर बटन लगाने जैसे कार्य करने के लिए कर सकते हैं। मूल रूप से, आपको शीर्ष लेख फ़ाइलों का एक सूट मिलता है और आप उन आयातित पुस्तकालयों में फ़ंक्शन कॉल कर सकते हैं, जैसे आप stdlib और के साथ करते हैं printf
।
प्रत्येक ऑपरेटिंग सिस्टम अपने स्वयं के जीयूआई टूलकिट, हेडर फ़ाइलों के सुइट और एपीआई कॉल और चीजों को करने के अपने तरीके के साथ आता है। GTK , Qt और wxWidgets जैसे क्रॉस प्लेटफ़ॉर्म टूलकिट भी हैं जो आपको कहीं भी काम करने वाले प्रोग्राम बनाने में मदद करते हैं। वे प्रत्येक प्लेटफ़ॉर्म पर एक ही एपीआई कॉल करके इसे प्राप्त करते हैं, लेकिन उन एपीआई फ़ंक्शंस के लिए एक अलग कार्यान्वयन जो मूल ओएस एपीआई कॉल को कॉल करता है।
एक चीज जो वे सभी में समाहित है, वह सीएलआई कार्यक्रम से अलग होगी, जिसे एक इवेंट लूप कहा जाता है। मूल विचार कुछ जटिल है, और संपीड़ित करना मुश्किल है, लेकिन संक्षेप में इसका मतलब है कि आपके मुख्य वर्ग / मुख्य कार्य में बहुत से लोगों का नरक नहीं जा रहा है, सिवाय:
इवेंट आधारित प्रोग्रामिंग के बारे में बहुत सारे संसाधन हैं। यदि आपके पास जावास्क्रिप्ट के साथ कोई अनुभव है, तो यह एक ही मूल विचार है, सिवाय इसके कि, आप के पास इवेंट लूप पर कोई एक्सेस या नियंत्रण नहीं है, या क्या घटनाएं हैं, आपका एकमात्र काम हैंडलर लिखना और पंजीकृत करना है।
आपको यह ध्यान रखना चाहिए कि जीयूआई प्रोग्रामिंग सामान्य रूप से अविश्वसनीय रूप से जटिल और कठिन है। यदि आपके पास विकल्प है, तो वास्तव में एक एम्बेडेड वेबसर्वर को अपने प्रोग्राम में एकीकृत करना और HTML / वेब आधारित इंटरफ़ेस रखना बहुत आसान है। एक अपवाद जो मैंने देखा है वह Apple का कोको + Xcode + इंटरफ़ेस बिल्डर + ट्यूटोरियल है जो इसे आसानी से GUI प्रोग्रामिंग के लिए नए लोगों के लिए सबसे अधिक स्वीकार्य वातावरण बनाता है जो मैंने देखा है।
बहुत सारे मुफ्त पोर्टेबल GUI पुस्तकालय हैं , जिनमें से प्रत्येक की अपनी ताकत और कमजोरियां हैं:
विशेष रूप से क्यूटी में अच्छे ट्यूटोरियल और टूल हैं जो आपको आरंभ करने में मदद करते हैं। का आनंद लें!
हालाँकि, ध्यान दें, कि आपको Win32 API या MFC जैसे प्लेटफ़ॉर्म विशिष्ट कार्यक्षमता से बचना चाहिए । यह लगभग किसी भी लाभ के साथ एक विशिष्ट मंच पर आपको अनावश्यक रूप से बाँधता है।
ओएस स्वतंत्र एल्गोरिथ्म " तीन चरणों में सी ++ में जीयूआई अनुप्रयोग बनाना ":
क्यूटी निर्माता स्थापित करें
नया प्रोजेक्ट बनाएं (Qt विजेट एप्लिकेशन)
इसे बनाओ।
बधाई हो, आपको C ++ में अपना पहला GUI मिल गया है।
अब आप "हैलो वर्ल्ड" GUI एप्लिकेशन की तुलना में कुछ अधिक जटिल बनाने के लिए बहुत सारे दस्तावेज पढ़ने के लिए तैयार हैं ।
"एक उदाहरण के रूप में विंडोज़ एक्सपी कहो" की टिप्पणी को देखते हुए, फिर आपके विकल्प हैं:
ऑपरेटिंग सिस्टम के साथ सीधे अपने एपीआई के माध्यम से बातचीत करें, जो माइक्रोसॉफ्ट विंडोज के लिए आश्चर्यचकित आश्चर्य कॉल विंडोज एपीआई है । WinAPI का निश्चित संदर्भ Microsoft की MSDN वेबसाइट है । उस के लिए एक लोकप्रिय ऑनलाइन शुरुआत ट्यूटोरियल हैफर्गर Win32 एपीआई प्रोग्रामिंग ट्यूटोरियल । उस के लिए क्लासिक किताब चार्ल्स पेट्ज़ोल्ड के प्रोग्रामिंग विंडोज, 5 वें संस्करण है ।
MFC जैसे विशिष्ट लाइब्रेरी (OS और कंपाइलर दोनों के संदर्भ में) प्लेटफ़ॉर्म का उपयोग करें , जो WinAPI को C ++ वर्ग में लपेटता है। उसके लिए संदर्भ फिर से MSDN है। इसके लिए एक क्लासिक किताब है जेफ़ प्रोसेज़ प्रोग्रामिंग एमएफसी, 2 डी संस्करण । यदि आप CodeGear C ++ बिल्डर का उपयोग कर रहे हैं, तो यहाँ विकल्प VCL है ।
GTK + (C ++ आवरण: gtkmm ), Qt , wxWidgets , या FLTK जैसे क्रॉस प्लेटफॉर्म लाइब्रेरी का उपयोग करेंउस विशिष्ट OS के API को लपेटें। इनसे लाभ यह है कि सामान्य तौर पर, आपके प्रोग्राम को स्रोत कोड बदलने के बिना अलग-अलग ओएस के लिए संकलित किया जा सकता है। जैसा कि पहले ही उल्लेख किया गया है, वे प्रत्येक की अपनी ताकत और कमजोरियां हैं। एक विचार जब चयन करने के लिए जो एक का उपयोग करने के लिए अपने लाइसेंस है। दिए गए उदाहरणों के लिए, GTK + & gtkmm LGPL के तहत लाइसेंस है, Qt मालिकाना विकल्प सहित विभिन्न लाइसेंसों के तहत है, wxWidgets अपने खुद के wxWindows लाइसेंस (wxWidgets लाइसेंस का नाम बदलने के साथ) के तहत है, और FLTK अपवाद के साथ LGPL के अंतर्गत है। संदर्भ, ट्यूटोरियल और पुस्तकों के लिए, विवरण के लिए प्रत्येक की वेबसाइट देखें।
चूँकि मैं पहले से ही आप जहाँ अभी हूँ, मुझे लगता है कि मैं आपको "जवाब" दे सकता हूँ।
तथ्य यह है कि GUI बनाने का कोई आसान तरीका नहीं है। GUI के प्लेटफ़ॉर्म और OS विशिष्ट कोड पर अत्यधिक निर्भर हैं, यही कारण है कि आपको विंडो प्रबंधन API पर अपना लक्ष्य प्लेटफ़ॉर्म / OS दस्तावेज़ पढ़ना शुरू करना चाहिए। अच्छी बात यह है कि बहुत सी लाइब्रेरीज़ हैं जो इन सीमाओं और अमूर्त वास्तुकला के अंतर को एक ही मल्टी-प्लेटफ़ॉर्म एपीआई में संबोधित करती हैं। GTK और Qt से पहले जिन लोगों ने सुझाव दिया था, उनमें से कुछ पुस्तकालय हैं।
लेकिन यहां तक कि ये थोड़ा बहुत जटिल हैं, क्योंकि बहुत सारी नई अवधारणाएं, डेटा प्रकार, नाम स्थान और कक्षाएं एक ही बार में पेश की जाती हैं। इस कारण से, वे कुछ GUI WYSIWYG संपादक के साथ आने के लिए उपयोग करते हैं। वे बहुत ज्यादा GUI के साथ प्रोग्रामिंग सॉफ्टवेयर बनाते हैं।
इसे योग करने के लिए, GUI विकास के लिए गैर मुक्त "वातावरण" भी हैं जैसे कि Microsoft से विजुअल स्टूडियो। डेल्फी अनुभव पृष्ठभूमि वाले लोगों के लिए , विजुअल स्टूडियो अधिक परिचित हो सकता है। Microsoft से प्रदत्त पूर्ण विज़ुअल स्टूडियो वातावरण के लिए भी मुफ्त विकल्प हैं: विज़ुअल स्टूडियो एक्सप्रेस , जो GUI विकास पर शुरू करने के लिए पर्याप्त से अधिक है।
मुझे एक "सरल" ट्यूटोरियल वाली वेबसाइट मिली: http://www.winprog.org/tutorial/start.html
C ++ में .NET Windows GUI बनाना आसान है।
MSDN से निम्न ट्यूटोरियल देखें । आप अपनी जरूरत की हर चीज (विजुअल C ++ एक्सप्रेस) मुफ्त में डाउनलोड कर सकते हैं ।
बेशक आप अपने आप को .NET से बाँध लेते हैं, लेकिन यदि आप केवल आसपास ही खेल रहे हैं या आपको केवल एक Windows एप्लिकेशन की आवश्यकता है तो आप ठीक हो जाएंगे (ज्यादातर लोगों के पास अभी भी Windows है ...)।
मैं FLTK का उपयोग करता हूं क्योंकि Qt मुक्त नहीं है। मैं wxWidgets नहीं चुनता , क्योंकि एक साधारण हैलो, वर्ल्ड के साथ मेरा पहला टेस्ट ! कार्यक्रम 24 एमबी, FLTK 0.8 एमबी के एक निष्पादन योग्य उत्पादन किया ...