2008-08-07 15 views
21

मुझे सी और सी ++ में लेखन कंसोल और नेटवर्क क्लाइंट/सर्वर अनुप्रयोगों का अनुभव है, लेकिन मैं Win32 विजुअल एपीआई, एमएफसी, क्यूटी, WxWidgets, आदि का उपयोग करने के बारे में कुछ भी नहीं जानता। शुरू करने के लिए एक अच्छी जगह कहां है, और किस विधि क्या मुझे भविष्य में तैयार और मजबूत होने के लिए विशेषज्ञ बनाना चाहिए?विंडोज़ के लिए प्रोग्रामिंग जीयूआई शुरू करने के लिए एक अच्छी जगह कहां है?

उत्तर

43

यह एक बड़ा सवाल है, क्योंकि विंडोज़ में प्रोग्रामिंग जीयूआई अनुप्रयोगों को कई तरीकों से किया जा सकता है। भाषा और एपीआई/ढांचे:

किसी भी जीयूआई एप्लिकेशन विकसित करने के लिए दो मुख्य भागों रहे हैं। ध्यान दें कि आप विंडोज जीयूआई ऐप्स बनाने के लिए सीखने में रुचि रखते हैं, भाषा वास्तव में आपके लिए फोकस का मुद्दा नहीं है। इसलिए, आपको एक ऐसी भाषा चुननी चाहिए जिसे आप पहले से जानते हैं और एक ढांचे या एपीआई के साथ काम करते हैं जिसे आपकी चुनी भाषा द्वारा उपयोग किया जा सकता है।

यदि आप सी का उपयोग करना चाहते हैं तो आप Win32 API से निपटने के लिए बहुत अधिक प्रतिबंधित हैं, इस मामले में Petzold या Richter पढ़ने के लिए बहुत अच्छी जगह होगी। Win32 एपीआई काफी चुनौतीपूर्ण हो सकता है, लेकिन यह सीखने के प्रयास के लायक है (imho)। वेब पर Win32 पर बहुत सारे ट्यूटोरियल हैं, और Win32 API के पूर्ण संदर्भ/मार्गदर्शिका के साथ हमेशा MSDN है। सुनिश्चित करें कि आप केवल एपीआई को कवर नहीं करते हैं, बल्कि संसाधनों/संवाद जैसे अन्य क्षेत्रों को कवर करते हैं क्योंकि वे आपके Win32 एप्लिकेशन के लिए ब्लॉक बना रहे हैं।

यदि आप सी ++ का उपयोग करना चाहते हैं तो आपके पास सी प्लस कुछ अन्य लोगों का उपयोग करते समय आपके पास मौजूद सभी विकल्प हैं। मैं सीधे Win32 एपीआई के साथ जाने की सिफारिश करता हूं, और उसके बाद एमएफसी, क्यूटी, डब्ल्यूएक्सविंडोज या जीटीके जैसे ज्ञात ढांचे पर जा रहा हूं ताकि आप बॉयलरप्लेट कोड के साथ काम करने में कम समय व्यतीत कर सकें और इसके बजाय अपने आवेदन तर्क लिखने पर ध्यान केंद्रित कर सकें। मेरे द्वारा सूचीबद्ध अंतिम 3 विकल्पों में क्रॉस-प्लेटफॉर्म होने का अतिरिक्त लाभ है, इसलिए आपको प्लेटफ़ॉर्म-विशिष्ट समस्याओं के बारे में बहुत चिंता करने की आवश्यकता नहीं है। यह देखते हुए कि आपने कहा है कि आप विंडोज के साथ काम करना चाहते हैं, मुझे लगता है कि आप क्रॉस-प्लेटफार्म की बजाय उस पर ध्यान केंद्रित करने के इच्छुक हैं - इसलिए एमएफसी के साथ जाएं, लेकिन कुछ समय से पहले Win32 API के साथ परिचित होने के लिए कुछ समय बिताएं अवधारणाओं।

एमएफसी और विन 32 एपीआई से निपटने के दौरान, कोड लिखने से पहले शब्दावली की ठोस समझ को समझने और प्राप्त करने का एक अच्छा विचार है। उदाहरण के लिए, आपको यह समझने की आवश्यकता है कि message pump क्या है, और यह कैसे काम करता है। आपको अवधारणाओं के बारे में जानने की आवश्यकता है जैसे कि "owner-drawn नियंत्रण", और subclassing। जब आप इन चीजों को समझते हैं (और अधिक), तो आपको एमएफसी के साथ काम करना आसान लगेगा क्योंकि यह अपने वर्ग इंटरफेस में समान शब्दावली का उपयोग करता है (उदाहरण के लिए आपको यह जानने की जरूरत है कि "अनुवाद संदेश" का अर्थ क्या है, इससे पहले कि आप समझ सकें कि कैसे और कब PreTranslateMessage का उपयोग करें)।

आप .NET GUI अनुप्रयोगों को लिखने के लिए प्रबंधित सी ++ का भी उपयोग कर सकते हैं, लेकिन मैंने कुछ स्थानों पर पढ़ा है कि प्रबंधित सी ++ वास्तव में इस तरीके से उपयोग नहीं किया गया था। इसके बजाय इसे देशी/अप्रबंधित कोड और प्रबंधित कोड के बीच गेटवे के रूप में उपयोग किया जाना चाहिए। यदि आप .NET का उपयोग कर रहे हैं तो अपने जीयूआई बनाने के लिए .NET भाषा जैसे VB.NET या C# का उपयोग करना सबसे अच्छा है।

तो अगर आप हैं नेट का उपयोग करने जा रहा है, यदि आप वर्तमान में WinForms लाइब्रेरी, या WPF का विकल्प है। मैं व्यक्तिगत रूप से महसूस करता हूं कि आप WinForms अनुप्रयोगों को बनाने के लिए सीखने में समय बर्बाद कर देंगे क्योंकि डब्ल्यूपीएफ को इसे बदलने के लिए डिज़ाइन किया गया है। समय के साथ डब्ल्यूपीएफ अधिक प्रचलित हो जाएगा और विनफॉर्म अधिकतर मर जाएंगे। डब्ल्यूपीएफ में एक बहुत ही समृद्ध एपीआई सेट है, और Winforms करता है कि कई सीमाओं से पीड़ित नहीं है। यदि आप इस मार्ग का चयन करते हैं, तो आपको XAML सीखना होगा, जो एक मार्कअप भाषा है जो WPF अनुप्रयोगों को चलाती है। यह तकनीक उम्र के आ रही है, और इसके बारे में जानने के लिए कई महान जगहें हैं। सबसे पहले, LearnWPF जैसी साइटें हैं, और DrWPF जिनमें कुछ वाकई शानदार लेख हैं। दूसरा, पर qualitybooks के plenty हैं।

तो, जब आप अपनी भाषा और तकनीक चुन लेते हैं, तो योग वास्तव में काफी आसान है। बस एक किताब या दो उठाओ, कुछ ब्लॉग पढ़ें, कुछ कोड नमूने में जाओ .. और सबसे महत्वपूर्ण बात ... कोड लिखें। लिखते रहें, गलतियां करें, और उनसे सीखते रहें।

एक अंतिम टिप्पणी के रूप में ...

दूसरे शब्दों में, सिल्वरलाइट। यदि आप एमएस रूट नहीं जाना चाहते हैं तो आप एडोब के फ्लैश/फ्लेक्स को एक लुक देखेंगे। सिल्वरलाइट और फ्लैश/फ्लेक्स दोनों आरआईए का निर्माण करते हैं। जो मुझे लगता है वह है जहां हम आगे बढ़ रहे हैं। वे ऐप्स जैसे कार्यालयों की संख्या

मैं बिल्कुल सहमत नहीं हूं। सिल्वरलाइट WPF के समान नहीं है। सिल्वरलाइट वेब-विशिष्ट है, और केवल WPF की सुविधाओं का सबसेट है। यह देखते हुए कि सवाल विंडोज जीयूआई ऐप्स के लिए पूछता है, फ्लैश/फ्लेक्स रिच इंटरनेट ऐप वास्तव में एक उपयुक्त सुझाव नहीं हैं। मैं यह भी सहमत नहीं हूं कि रिच क्लाइंट एप्लिकेशन (जैसे कार्यालय) के दिन गिने गए हैं।

मुझे उम्मीद है कि इससे मदद मिलती है। शुभकामनाएँ :)

+2

यदि आप सी ++ से Win32 एपीआई का उपयोग करना चाहते हैं, तो डब्ल्यूटीएल भी है। पेटज़ोल्ड और रिचर के लिए http://wtl.sourceforge.net/ –

+0

+1 देखें। –

6

मैं अगर मैं इसे एक अच्छी जगह शुरू करने के लिए फोन करता हूँ पता नहीं है, लेकिन अगर आप भविष्य के लिए तैयार होना चाहता हूँ, windows presentation foundation पर एक नज़र जो पूरी तरह से खिड़कियों

के लिए प्रोग्रामिंग जीयूआई के के उद्देश्य के लिए बनाया गया है ले
4

विंडोज के लिए सरल जीयूआई अनुप्रयोग लिखने का मेरा पहला अनुभव सी # और विजुअल स्टूडियो के साथ था। जीयूआई-बिल्डिंग इंटरफेस एक साधारण ड्रैग और ड्रॉप डील है जो संभावित उपयोगकर्ता क्रियाओं के आधार पर कंकाल विधियों को उत्पन्न करता है। मैंने केवल इसके साथ काफी बुनियादी प्रोग्रामिंग किया है, लेकिन मुझे लगता है कि यह मूल बातें सीखना शुरू करने और जितनी अधिक उन्नत क्षमताओं में बढ़ने के लिए एक उत्कृष्ट जगह होगी।

0

व्यावसायिक ऐप्स के लिए, विंडोज फॉर्म बहुत परिपक्व है। यह आपके लिए बहुत बढ़िया नियंत्रण प्रदान करने और अपने आप को घुमाए जाने के लिए ऑटो-जनरेटिंग से एक सौम्य मार्ग प्रदान करता है। वहां बहुत से उच्च गुणवत्ता वाले तृतीय पक्ष नियंत्रण और उदाहरणों, दस्तावेज़ों आदि का एक बड़ा निकाय है। किसी समस्या में भागना मुश्किल है जिसे किसी और ने हल नहीं किया है। मैं अत्यधिक पृष्ठभूमि Win32 ज्ञान (उदा। Petzold) प्राप्त करने की अत्यधिक अनुशंसा करता हूं क्योंकि WinForms फ्रेमवर्क इसके शीर्ष पर रहता है।

मेरे पास कोई WPF अनुभव नहीं है, लेकिन नमूना ऐप्स से मैंने देखा है कि यह उन ऐप्स के लिए एक अच्छी पसंद की तरह दिखता है जिनके इंटरफेस अधिक ग्राफिकल रूपकों से लाभान्वित होंगे। तो यदि आप एक बैंकिंग ऐप कर रहे हैं, तो शायद अतिरिक्त डिज़ाइन ओवरहेड के लायक नहीं है। लेकिन अगर आप कर रहे हैं, तो कहें, एक गोदाम प्रबंधन ऐप इसे सुंदर डिब्बे में सुंदर बक्से छोड़कर सुधार किया जा सकता है।

@ स्टीफनकॉक्स: गलत प्रश्न का गलत जवाब। ओपी डेस्कटॉप क्लाइंट ऐप्स के बारे में पूछ रहा है, और इसके अलावा, डब्ल्यूपीएफ! = सिल्वरलाइट।

0

"ईवेंट-संचालित" प्रकृति के आसपास अपना सिर प्राप्त करने के लिए एक सरल प्रारंभिक बिंदु के लिए मूल रूप से सभी ढांचे को FLTK पर देखने के लिए बनाया गया है।

यहाँ कुछ त्वरित प्रारंभिक वीडियो Link

व्यावसायिक उपयोग के लिए मैं क्यूटी, महंगा है, लेकिन अक्सर वाणिज्यिक स्थितियों में इसके लायक का सुझाव देते हैं।

0

चूंकि आप पहले से ही सी और सी ++ से परिचित हैं, इसलिए मैं चार्ल्स पेटज़ोल्ड की पुस्तक का उपयोग करके एक साधारण विंडोज जीयूआई ऐप लिखना सीखने की सलाह दूंगा। यह आपको विंडोज़ कैसे काम करता है इसकी मौलिक समझ देगा। यह समझना अच्छा होता है कि जो कुछ भी आप देखते हैं वह एक खिड़की है (एक बटन उदाहरण के लिए एक खिड़की है) और ये खिड़कियां संदेशों का जवाब देती हैं। मैं इस पर बहुत समय बिताना नहीं चाहता हूं और अगर आपको डब्ल्यूपीएफ चुनने जा रहे हैं तो आपको पहले ऐसा करने की ज़रूरत नहीं है। मुझे लगता है कि इसकी बुनियादी समझ होना अच्छा है।

हाल ही में एक अच्छा पॉडकास्ट था। नेट चट्टानों पर "Kate Gregory Develops in C++ for Vista!" कहा जाता है, जहां वह सिफारिश करती है कि अब शुरू करने वाले किसी को एमएफसी का उपयोग नहीं करना चाहिए (भले ही इसे हाल ही में अपडेट किया गया हो)।

जहां तक ​​भविष्य के लिए तैयार हो रहा है, आपको डब्ल्यूपीएफ सीखना होगा, लेकिन यह अभी तक पूरा नहीं हुआ है, इसलिए क्लाइंट साइड ऐप के प्रकारों के आधार पर, आपको शायद WinForms सीखने की आवश्यकता होगी। अधिकांश लोग अभी तक WPF का उपयोग नहीं कर रहे हैं, इसलिए सीखना शुरू करने का एक अच्छा समय है। मुझे लगता है कि सी ++ के साथ प्रबंधित कोड करने के बजाय आपको सी # का उपयोग करके इसे आसान बनाना होगा।

1

मैं कभी भी सिल्वरलाइट, फ्लैश/फ्लेक्स या किसी भी समान मार्ग पर नहीं जाऊंगा। यह अच्छा लग रहा है, लेकिन मुख्य समस्या यह है कि इंजन चलाने वाला कोड पूरी तरह से बंद-बॉक्स है और एक ही कंपनी द्वारा नियंत्रित होता है। उदाहरण के लिए, उन दोनों के 64 बिट संस्करणों को लें। यदि कुछ नया मंच उभरता है, तो आप अपने मौजूदा कोड को माइग्रेट करने में सक्षम नहीं होंगे।

+1

बंद बॉक्स और एकल कंपनी बिल्कुल समस्या नहीं है। आपके द्वारा काम किए जाने वाले बॉक्स के बावजूद अभी भी आपके कोड को पोर्ट करने में सक्षम होने का जोखिम नहीं चला है। सिल्वरलाइट या फ्लैश से बचने के लिए अन्यायपूर्ण एफयूडी एक तर्क नहीं है। –

3

ऑनलाइन Win32 ट्यूटोरियल के बहुत सारे हैं:

http://www.zeusedit.com/forum/viewtopic.php?t=1218

compilers के बहुत चुनने के लिए कर रहे हैं से:

http://www.zeusedit.com/forum/viewtopic.php?t=238

मैं भी बोर्लेन्ड Win32 एसडीके हो रही सिफारिश करेंगे WinHelp फ़ाइल प्रारूप में प्रलेखन:

http://www.zeusedit.com/forum/viewtopic.php?t=7

यह केवल Win32 की नंगे मूलभूत बातें शामिल करता है, लेकिन जब शुरू होता है, तो यह सहायक हो सकता है क्योंकि यह एमएसडीएन की तुलना में कम कठिन और कम फूला हुआ है।

0

अपनी मूल बातें पहले प्राप्त करें। बेस्ट ट्यूटोरियल मैंने पाया है: http://winprog.org/tutorial/start.html

उसके बाद, हालांकि मुखपृष्ठ द्वेषपूर्वक अरुचिकर है, ट्यूटोरियल पृष्ठों की सामग्री और सौंदर्यशास्त्र में अच्छा कर रहे हैं: http://www.tenouk.com/cplusmfcdotnet.html

तो निश्चित रूप से वहाँ MSDN

संबंधित मुद्दे

 संबंधित मुद्दे