2008-08-26 17 views
9

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

हाल ही में मैं क्यूटी और लाभ यह प्रदान करता है में और अधिक शोध कर रहा हूँ (पार मंच और समर्थन करता है, क्या आप यूआई विकास के लिए एक अधिक "पेशेवर" देख ढांचे कॉल कर सकते हैं)।

मेरा प्रश्न है - शायद क्यूटी फ्रेमवर्क पर जाने का सबसे अच्छा तरीका क्या होगा? क्या क्यूटी एमएफसी के साथ अच्छा खेलता है? क्या क्यूटी में हमारे कुछ कस्टम नियंत्रणों को पोर्ट करना शुरू करना बेहतर होगा और धीरे-धीरे हमारे मौजूदा एमएफसी ऐप्स में अधिक से अधिक एकीकृत करना बेहतर होगा? (क्या यह संभव है?)।

कोई सलाह या पिछले अनुभव की सराहना की जाती है।

उत्तर

8

मेरी कंपनी में, हम वर्तमान में क्यूटी का उपयोग कर रहे हैं और इससे बहुत खुश हैं।

मैं personnally क्यूटी ढांचे का उपयोग करते हुए एक MFC-ऐप ले जाने के लिए नहीं था, लेकिन यहाँ कुछ है जो आप के लिए कुछ रुचिकर हो सकती है:

Qt/MFC Migration Framework

Qt/MFC Migration Framework

यह क्यूटी-सॉल्यूशंस का हिस्सा है, इसलिए इसका मतलब है कि आपको क्यूटी-सॉल्यूशंस लाइसेंस के साथ एक क्यूटी लाइसेंस खरीदना होगा। (संपादित करें: not any more)

मुझे उम्मीद है कि इससे मदद मिलती है!

2

(यह वास्तव में आपके विशिष्ट प्रश्नों का उत्तर नहीं देता है ...) मैंने व्यक्तिगत रूप से क्यूटी का उपयोग नहीं किया है, लेकिन यह वाणिज्यिक विंडोज विकास के लिए स्वतंत्र नहीं है।

आप wxWindows जो मुक्त है को देखा है? अच्छा लेख here। बस एक तरफ के रूप में, यदि आप सभी प्लेटफार्मों के लिए एक कोड बेस चाहते थे, तो आपको एमएफसी से दूर माइग्रेट करना पड़ सकता है - मुझे पूरा यकीन है (कोई गलत होने पर सही होगा) कि एमएफसी केवल विंडोज को लक्षित करता है।

एक अन्य विकल्प Feature Pack update को वीएस -2008 के एसपी 1 में एमएफसी में देखना होगा - इसमें कार्यालय शैली रिबन नियंत्रण सहित नए नियंत्रणों तक पहुंच शामिल है।

+1

क्यूटी अब एलजीपीएल-लाइसेंस प्राप्त है (http://www.heise.de/ix/Qt-Toolkit-mit-LGPL-Lizenz--/news/meldung/121584)। AFAIK इसका मतलब है कि यह * वाणिज्यिक उपयोग के लिए * है। –

+1

या, अंग्रेजी में: http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt – gbjbaanb

+0

गतिशील पुस्तकालयों को जोड़ने और आवेदन में इसके बारे में सूचित करते समय वाणिज्यिक उपयोग के लिए यह हमेशा कानूनी था लाइसेंस – killdaclick

0

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

सामान्य में, मेरी सलाह गोली काटने और एक ही बार में पूरे रास्ते जाने के लिए किया जाएगा। निश्चित रूप से, इसमें अधिक समय लग सकता है, लेकिन वैकल्पिक है कि प्ले बॉल नहीं है, और दो प्रणालियों के बीच मामूली असंगतताओं से निपटने के लिए और अधिक कोड लिखने का विकल्प समाप्त हो गया है (वहां किया गया है,)।

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

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

0

मैंने इस तरह की चीज करने से पहले एक टीम का नेतृत्व किया है (एमएफसी को क्यूटी नहीं बल्कि सिद्धांतों को काम करना चाहिए)।

सबसे पहले हमने संवाद दस्तावेज किए और उनके इनपुट, नियंत्रण और आउटपुट क्या थे। इसके अलावा, हम विशेष रूप से जीयूआई के अंदर किसी भी चालाक तर्क के लिए कई परीक्षण मामले बनाते हैं।

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

अब हमारे पास जीयूआई, इनपुट, आउटपुट, परीक्षण और एक इंटरफ़ेस की सूची थी जो encapsulated GUI से मेल खाना था।

हमने प्रोजेक्ट द्वारा प्रोजेक्ट शुरू किया, पुराने लोगों को समतुल्य जीयूआई बनाने के लिए। एक बार जब हमने ऐसा किया तो हम जीयूआई को स्लॉट कर सकते थे जहां पुराना था, पुनर्निर्माण और इसका परीक्षण। सबसे पहले हमने बहुत सी यात्रा की लेकिन हमने जल्द ही सामान्य त्रुटियों का काम किया और उन्हें ठीक कर दिया। हमने नेविगेट किया (मुझे लगता है) 612 संवाद हालांकि हम इसमें से एक दर्जन काम कर रहे थे।