2008-09-23 24 views

उत्तर

3

Quick Tour Of New MFC Functionality

मैंने सुना है कि वे एक नया रिबन नियंत्रण है। यदि आप इस तरह की जटिलता में हैं। यहाँ एक नई जनरेट एप्लिकेशन का एक स्क्रीनशॉट है:

http://blogs.msdn.com/blogfiles/vcblog/WindowsLiveWriter/QuickTourOfNewMFCFunctionality_C777/Wizard%20Generated%20with%20accelerator%20tips_2.jpg

वास्तव में, यह सिर्फ एक विजेट अद्यतन है। तो क्या हमें और विजेट चाहिए?

+1

अब आप जानते हैं कि कार्यालय में लिखा है, और उन लोगों क्या चाहते हैं, वे मिलता है। सिनोफस्की ने कहा कि वीएस की अगली रिलीज सी ++ पर केंद्रित होगी, लेकिन जब हम आएंगे तो हम देखेंगे। – gbjbaanb

+0

बीसीजीएसओफ्ट से ये नए एमएफसी नियंत्रण खरीदे गए थे, हम उन्हें किसी भी समय खरीदा था। –

+0

हारून फिशर सही है। एमएस चाहता था कि एमएफसी खत्म हो जाए। जब तक कि उन्होंने कुछ लोगों को अपने जीवन को फैलाने की कोशिश नहीं की। एमएस ने उन लोगों को खरीदा। –

8

एमएफसी का लाभ यह है कि यह अभी भी नंगे Win32 को कोडिंग करने से बेहतर है और आप देशी .exe वितरित कर सकते हैं जिसे 23-50 एमबी रनटाइम की आवश्यकता नहीं है जैसे .Net।

अब, यदि आप उन चीजों के बारे में चिंतित हैं तो बेहतर विकल्प हैं: सी ++ बिल्डर, WxWidgets, आदि। लेकिन कुछ जगह गैर-माइक्रोसॉफ्ट टूल्स पर विचार नहीं करेंगे।

+1

व्यक्तिगत रूप से, मैं Win32 को एमएफसी को पसंद करता हूं। मुझे Win32 पर एमएफसी को कोई गंभीरता से जोड़ा गया मूल्य कभी नहीं मिला। इसके अलावा, डब्ल्यूटीएल भी है जो कई साल पहले काफी अच्छा था और अब तक शायद महान है। –

4

स्पष्ट रूप से यह अभी भी विंडोज-आधारित हाथ से आयोजित उपकरणों, जैसे बिंदु-बिक्री उपकरणों के लिए अनुप्रयोगों के लिए एक अच्छा विकल्प है। इन में, संसाधन सीमित हैं इसलिए स्मृति प्रबंधन जैसी चीजें अधिक महत्वपूर्ण हो जाती हैं।

8

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

यदि आप डेस्कटॉप मोड को विकसित करने जा रहे हैं, तो केवल विंडोज़ के लिए सी ++ में, तो एमएफसी सबसे परिपक्व पसंद है, जिसमें इंटरनेट पर एमएफसी के आधार पर बहुत सारे मुफ्त कोड हैं, बहुत सारे ज्ञान।

+0

ऐसे परिदृश्य में आप सी ++ में गति संवेदनशील तर्क विकसित कर सकते हैं, एक डीएल के लिए संकलित कर सकते हैं और फिर ui को सी # के साथ बना सकते हैं। – shsteimer

+4

व्यापारिक ऐप्स में, यूआई को भी तेजी से व्यापार करना चाहिए, अंतिम व्यापार मूल्य, आदि के साथ बनाए रखने के लिए –

2

मौजूदा विंडोज एपीआई पूरी तरह से सी आधारित है। यदि आप सी ++ (और आपको शायद चाहिए) का उपयोग करना चाहते हैं तो एमएफसी तार्किक विकल्प है यदि आप मूल रहना चाहते हैं (यानी .NET का उपयोग नहीं कर रहे हैं)।

एमएफसी सी एपीआई के शीर्ष पर ऑब्जेक्ट उन्मुख वर्गों का एक सेट है। इसके अलावा कुछ अतिरिक्त "सहायक" कक्षाएं जो रोजमर्रा के कार्यों को आसान बनाती हैं।

1

डिजाइन पर & अकेले तकनीकी योग्यताएं? स्पष्ट होने के लिए खेद है, लेकिन कोई नहीं। यह एक खराब डिजाइन है, एक बेहद कमजोर अमूर्त जहां आपको Win32 एपीआई प्रोग्रामिंग में वापस आना है, सी ++ का आकस्मिक रूप से दुरुपयोग करना है, और कल की तकनीक पर दृढ़ता से लक्षित है: आपको आधुनिक (या यहां तक ​​कि एक आकर्षक!) उपयोगकर्ता अनुभव नहीं मिलेगा एक एमएफसी ऐप। यदि आप सी # डेवलपर्स प्राप्त कर सकते हैं और आपके पास गंभीर हार्डवेयर सीमाएं नहीं हैं, तो WinForms के साथ जाएं।

बाहरी कारक जैसे कि किराया, प्रशिक्षण कार्यक्रम और तीसरे पक्ष के घटकों के लिए योग्यता की उपलब्धता, दूसरी तरफ, कम से कम कुछ प्रकार के अनुप्रयोगों के लिए अपनी जीवनकाल बढ़ा सकते हैं: छोटे & सरल, विशेष अनुप्रयोगों के लिए लक्षित उचित रूप से कुछ उपयोगकर्ता, अधिमानतः घर में।

+1

आप एमएफसी के बजाय डब्ल्यूटीएल पर भी विचार कर सकते हैं। –

+0

एमएसएफएफसीईएस प्री 2007 एमएफसी में लिखा नहीं गया था !? यह न तो एक छोटा और न ही सरल ऐप है। –

+0

@ बाय्रॉन: असल में एमएफसी के बारे में मेरी सबसे नकारात्मक भावना यह है कि यह मानता है कि आप एमएस ऑफिस एप्लिकेशन लिख रहे हैं :) वास्तव में दस्तावेज़-दृश्य आर्किटेक्चर में इसकी योग्यता है, लेकिन अल्पसंख्यक (मुझे लगता है) जीयूआई अनुप्रयोगों के लिए। – EFraim

6

यहां एक संभावना है - एक ऐसे अनुप्रयोग की कल्पना करें जिसमें बड़ी मात्रा में स्मृति की आवश्यकता होगी, एक ग्राफिक्स प्रोग्राम, एक गेम या शायद कुछ उच्च प्रदर्शन व्यवसाय अनुप्रयोग कहें। यह कोई रहस्य नहीं है कि .NET अनुप्रयोगों की यादें स्मृति - इस तरह के मामले में, आप अपने आवेदन के मूल के लिए एक दुबला एमएफसी ऐप चाह सकते हैं। आप हमेशा कॉल कॉल करने योग्य रैपर या सीधे सी ++/सीएलआई के माध्यम से .NET घटकों, नियंत्रण इत्यादि को लोड और उपयोग कर सकते हैं।

यह सब कहा जा रहा है - एमएफसी एक दर्द है। इसके बजाय डब्ल्यूटीएल पर विचार करें - यदि आप एमएफसी के लिए उपर्युक्त उल्लेख करते हैं, तो भी आपको .NET में कॉल कर सकते हैं।डब्ल्यूटीएल एमएफसी की तुलना में बहुत अच्छा है :-)

+0

मैं अपने पुराने प्रोजेक्ट पर डब्ल्यूटीएल से प्यार करता था। :) –

15

एमएफसी 10 साल पहले अच्छा विकल्प था। यह अभी भी Win32 एपीआई पर एक अच्छा रैपर है लेकिन दुर्भाग्य से अप्रचलित है।

ट्रॉल्टेक का क्यूटी एक बड़ा लाभ के साथ बेहतर विकल्प है - यह मंच स्वतंत्र है। एमएफसी के साथ आप विंडोज़ पर बर्बाद हो गए हैं।

+2

मेरे द्वारा +1, मुझे एमएफसी से क्यूटी तक छलांग लग गई;) –

0

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

आप पर नज़र चाहते हैं, यह LGPL'ed और पर है है:

http://code.google.com/p/kgui/

3

मुझे लगता है कि नहीं .. MFC में अमूर्त की

  • स्तर बाहर खो देगा
  • विकास का समय
  • समस्या निवारण समय
  • नए डी के लिए सीखना वक्र evelopers
  • भविष्य (हालांकि अब है कि संदिग्ध है .. कुछ नया के साथ हर 3-4 साल आ रहा है)
  • अच्छा जो लोग अपने MFC
  • आसान पता नियंत्रण

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

एमएफसी विकास में एक महत्वपूर्ण कदम था, लेकिन अब बेहतर विकल्प उपलब्ध हैं।

1

यदि आप सी ++ में विंडोज सीई और मोबाइल ऐप विकसित कर रहे हैं, क्योंकि ईनार पहले ही उल्लेख कर चुका है, एमएफसी एक अच्छी पसंद है। यदि आप यह विकल्प चुनते हैं, तो एमएफसी डेस्कटॉप के लिए भी उचित विकल्प बन जाता है क्योंकि आप डेस्कटॉप और हाथ से आयोजित डिवाइसों पर एक ही कोड का उपयोग कर सकते हैं। एमएफसी इस परिदृश्य में संयोजन को लागू करने के लिए एक अच्छा perfomance/आसान बना हुआ है। निजी तौर पर, मैं इन enivornments में Stingray पुस्तकालयों के संयोजन के साथ एमएफसी का उपयोग करता हूं जो एक बहुत अच्छा इंटरफेस, अच्छा प्रदर्शन देता है और इसे लागू करने के लिए त्वरित और आसान है।

10

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

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

+0

क्षमा करें, पर्याप्त, सहनशील है ठीक है, उत्कृष्ट बिल्कुल अनचाहे है। मैं पूरी तरह से कुछ ऐसा नहीं कह सकता जो सभी * Win * विवरण को * उत्कृष्ट * अमूर्तता के रूप में ले जाता है। आपको दिल से Win32 पता होना चाहिए और फिर कुछ अतिरिक्त एमएफसी विशिष्ट quirks (उदाहरण के लिए संदेश मानचित्र से संबंधित) – EFraim

+6

मुझे यकीन है कि मैंने कभी "उत्कृष्ट अमूर्तता" नहीं कहा। यह Win32 एपीआई के ब्योरे को छिपाने के लिए नहीं है, इसका मतलब यह है कि Win32 API का उपयोग करने वाले अनुप्रयोगों को विकसित करने के लिए एक साधन प्रदान करना है, और अधिक समान रूप से, जबकि अभी भी आवश्यक या सुविधाजनक होने पर सीधे Win32 API में कॉल करना आसान बनाते हैं। उस पर, यह उत्कृष्ट है। – Gerald

+0

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

1

मैं कहूंगा कि गति और पदचिह्न .NET पर अच्छे कारण हैं।

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

7

Win32 एपीआई के अलावा, एमएफसी एकमात्र मुख्यधारा विंडोज प्रोग्रामिंग तकनीक है जो 15+ वर्षों के बाद 2011 में अभी भी जीवित और अच्छी तरह से है। 2001 में वापस सभी ने कहा 'एमएफसी मर चुका है, अब यह सभी विनफॉर्म है'; 2005 में सभी ने कहा कि 'एमएफसी मर चुका है, यह अब सभी एक्सएएमएल है'; अब यह 2011 है और विनफॉर्म और एक्सएएमएल मर चुके हैं (ठीक एक्सएएमएल शायद वास्तव में मृत नहीं है, लेकिन इसके प्राइम के पीछे रास्ता) और एमएफसी को अभी भी नवीनतम विकास (रिबन, एयरो एक्सटेंशन, विन 7 एपीआई इत्यादि) के साथ अपडेट किया जा रहा है।

बेशक, यह भविष्य के लिए कुछ भी गारंटी नहीं देता है, लेकिन उन 15+ वर्षों में, एमएफसी कोड के लिखे गए हैं, और यह अगले दशक या दशकों के लिए उपयोग में रहेगा। यह सबसे सुंदर तकनीक नहीं हो सकता है लेकिन यह अच्छी तरह से समझा जाता है (इसके अच्छे और बुरे बिंदु) और अन्य प्रचार तकनीकों की तरह एक चलती लक्ष्य नहीं है, जिसका अर्थ है कि जो लोग वास्तव में काम करना चाहते हैं, वे इस पर भरोसा कर सकते हैं (और भी विकल्प के मुकाबले, वैसे भी)।

(सी ++ के लिए एक ही चला जाता है, Btw)

+1

एक्सएएमएल नए विंडोज 8 सामान ("मूल" कोड के साथ) का एक बड़ा हिस्सा है। // बिल्ड/मुख्य नोट में एमएफसी का कोई उल्लेख नहीं है। शायद Win8 पूर्वावलोकन स्थापित करने वाला कोई भी व्यक्ति एमएफसी पर टिप्पणी कर सकता है। – crashmstr

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