मैं एमएफसी सीख रहा हूं। अगर मैं गलत नहीं हूँ, तो सभी MFC वर्गों के नाम बड़े अक्षर "C" से शुरू होते हैं (जैसे CFrameWnd
, CFile
, CMenu
, आदि)
मैंने पाया कि एमएफसी आधारित परियोजना के लिए विजुअल स्टूडियो विज़ार्ड द्वारा उत्पन्न कोड उपयोगकर्ता द्वारा परिभाषित कक्षाओं के समान नाम देता है। उदाहरण के लिए, यदि मैं अपनी परियोजना को "आकृतियाँ" नाम देता हूँ, तो परियोजना के लिए उत्पन्न वर्गों में CShapesApp
, CMainFrame
, CChildView
, आदि जैसे वर्ग शामिल हैं।
अंत में, आपके प्रोजेक्ट में कई कक्षाएं होंगी, जो CShapesApp
, CFrameWnd
, CMainFrame
, CWinApp
, CWnd
, आदि जैसी दिख सकती हैं।
प्रश्न: मेरे लिए, वर्गों के नाम (उपयोगकर्ता-परिभाषित और एमएफसी पुस्तकालय) काफी समान और अंतर करने में कठिन लगते हैं यदि यह उपयोगकर्ता-परिभाषित वर्ग या एमएफसी पुस्तकालय वर्ग है।
एमएफसी आधारित परियोजनाएं ऐसे नामकरण सम्मेलनों को क्यों चुनती हैं (अर्थात उपयोगकर्ता-परिभाषित वर्गों के सामने "सी" क्यों रखें)?
मैं एमएफसी पुस्तकालय कक्षाओं और उपयोगकर्ता परिभाषित कक्षाओं के बीच आसानी से अंतर कैसे कर सकता हूं?
अद्यतन करें: मैं जानता हूं कि मैं नाम बदल सकता हूं और मैं पहले ही यह कोशिश कर चुका हूं। लेकिन सामान्य परंपरा यह है कि उपयोगकर्ता द्वारा परिभाषित कक्षाओं के लिए भी "C" के साथ वर्ग के नाम शुरू किए जाएं और मेरा प्रश्न यह है कि क्यों? और मैं आसानी से कैसे अंतर कर सकता हूं?
2 जवाब
एमएफसी आधारित परियोजनाएं ऐसे नामकरण सम्मेलनों का चयन क्यों करती हैं (अर्थात "सी" को उपयोगकर्ता-परिभाषित वर्गों के सामने क्यों रखा जाए)?
इसका उत्तर देना असंभव है। एक अनुमान पर, 90 के दशक की शुरुआत में, यह करना सामान्य बात थी। नेमस्पेस को 1995 में C++ में जोड़ा गया था, यानी MFC पर काम शुरू होने के वर्षों बाद, इसलिए MFC ग्लोबल नेमस्पेस में बंद हो गया। कक्षाओं के लिए C
उपसर्ग का उपयोग करने से प्रतीकों के विंडोज एपीआई और एसडीके हेडर से टकराने की संभावना कम हो जाती है।
मैं एमएफसी पुस्तकालय कक्षाओं और उपयोगकर्ता परिभाषित कक्षाओं के बीच आसानी से अंतर कैसे कर सकता हूं?
एमएफसी कक्षाएं उपयोगकर्ता द्वारा परिभाषित कक्षाएं हैं। यह तुरंत स्पष्ट नहीं है, आपको एमएफसी द्वारा प्रदान की गई उपयोगकर्ता-परिभाषित कक्षाओं और आपके कोड द्वारा प्रदान की गई उपयोगकर्ता-परिभाषित कक्षाओं के बीच अंतर करने की आवश्यकता क्यों है। यदि आपको यह उपयोगी लगता है, तो कोई शॉर्टकट नहीं है। आपको बस यह याद रखना है कि कौन से एमएफसी से संबंधित हैं।
हालांकि, एमएफसी में कक्षाओं के 2 सेट हैं, जिसके लिए यह जानना उपयोगी है कि वे किस सेट में हैं: 'मूल' कक्षाएं, और विजुअल स्टूडियो 2008 (मेरा मानना है) के साथ शुरू की गई कक्षाएं, जो एक व्यापक सेट प्रदान करती हैं कार्यक्षमता का। आप उपसर्ग को देखकर उन सेटों के बीच अंतर कर सकते हैं: 'मूल' कक्षाएं C
(जैसे CButton
) से शुरू होती हैं, और अपडेट की गई कक्षाओं में एक CMFC
उपसर्ग होता है (जैसे CMFCButton
).
CMainFrame
और CFrameWnd
कमोबेश एक जैसे लगते हैं और इसी तरह CWinApp
और CMainApp
समान लगता है।
"सी" उपसर्ग सम्मेलन आपके स्वाद का प्रश्न है। लेकिन याद रखें, सभी एमएफसी-व्युत्पन्न वर्ग वास्तव में एमएफसी वर्ग "हैं" - विरासत के अर्थ में एक व्युत्पन्न वर्ग "पूर्वज" भी है। तो मत भूलिए कि आपके CWnd-व्युत्पन्न CMyWnd में वह सब कुछ है जो एक CWnd के पास भी है। नामकरण के लिए मेरा व्यक्तिगत दृष्टिकोण (जिसे मैंने कई देव टीमों में पेश किया) सभी एमएफसी-व्युत्पन्न वर्गों के लिए "सी" उपसर्ग का उपयोग करना है और गैर-एमएफसी-व्युत्पन्न कक्षाओं पर एक और (या यहां तक कि कोई नहीं) का उपयोग करना है।
संबंधित सवाल
नए सवाल
windows
Microsoft Windows ऑपरेटिंग सिस्टम के लिए विशिष्ट सॉफ्टवेयर लिखना: एपीआई, व्यवहार, आदि सामान्य विंडो समर्थन OFF-TOPIC है। समर्थन प्रश्न https://superuser.com पर पूछे जा सकते हैं
C
वर्ग के नाम के सामने विशुद्ध रूप से एक एमएफसी सम्मेलन है। आप अपने पहचानकर्ताओं को अपनी पसंद के अनुसार नाम दे सकते हैं।C
होने का लाभ यह है कि आप तुरंत देखते हैं कि यह एक वर्ग का नाम है। 15 साल या उससे भी पहले यह काफी फायदेमंद था, लेकिन आज के बुद्धिमान संपादकों के साथ यह कम प्रासंगिक है।