2009-07-19 13 views
8

क्या WinAPI/Win32 में कोई मौलिक अंतर है? क्या नई ओएस सुविधाओं का लाभ उठाने के लिए कोई अतिरिक्त ज्ञान आवश्यक है?VISTA के लिए विंडोज एपीआई, 7 और

क्या कोई समस्या है जो किसी ने पहले Win32 ऐप्स को कोड किया है, हो सकता है?

मैं सिल्वरलाइट के बारे में बात नहीं कर रहा हूं, यह मोम की एक पूरी तरह से अलग गेंद है। (मेरे पास वीएस नहीं है जो अभी तक काम पर समर्थन करता है।)

संपादित करें: ड्रू का अब तक एक बहुत अच्छा जवाब है, लेकिन प्रोग्रामर के लिए क्या महत्वपूर्ण है? यानी चार्ल्स पेटज़ोल्ड की पुस्तक में परिशिष्ट में क्या होना चाहिए? (सैद्धांतिक रूप से)

+0

शायद मुझे इसे सप्ताहांत पर पोस्ट नहीं करना चाहिए था। बहुत सारे विचार नहीं। – NoMoreZealots

+2

क्या उस लड़के का नाम चार्ल्स पेटज़ोल्ड नहीं है? –

+0

बस एक नोट जो मुझे कुछ नए एपीआई मिल रहा है उसे सी ++ से बुलाया जा सकता है लेकिन सी से नहीं, कम से कम कुछ परेशानी के बिना नहीं। 'SHGetKnownFolderPath()' मैं इस समय संघर्ष कर रहा हूं। – hippietrail

उत्तर

14

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

दार्शनिक
सी शैली एपीआई पर ध्यान केंद्रित वर्ष Win32 एपीआई जहां हैंडल के आसपास पारित किए गए के बड़े भाग बदल जाता है। आजकल, विकसित किए जा रहे कई नए एपीआई COM-आधारित हैं, इसलिए COM और ATL पर बोनिंग सार्थक होगा।

यदि आप अपनी खुद की पुस्तकालय लिख रहे हैं, तो आप नई एपीआई शैली का भी ध्यान रखना चाहेंगे, जो थोड़ा अधिक संगत है और हंगेरी नोटेशन जैसी चीजों से बचाता है।

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

विशेष रूप से, एक 'प्रतिस्थापन' एपीआई डायरेक्ट 2 डी है, जो यूआई के लिए डायरेक्टएक्स-स्टाइल एपीआई है। यदि आप विंडोज 7 के लिए ग्राफिक्स कोड लिख रहे हैं, तो आपको जीडीआई पर डायरेक्ट 2 डी पर विचार करना चाहिए, जिसमें एक प्रोग्रामिंग मॉडल है जो जीडीआई के मुकाबले काफी अलग है। डायरेक्ट 2 डी को Vista पर वापस भेज दिया जा सकता है।

इसके अलावा, Win32-style मेनूिंग का उपयोग करने के बजाय, रिबन का उपयोग करने पर विचार करें, जो Vista और Win7 के लिए उपलब्ध होगा।

यदि आप सामान्य नियंत्रण लाइब्रेरी का उपयोग कर रहे हैं, तो v6 का डिफ़ॉल्ट उपयोग नहीं करना सुनिश्चित करें, v5 का डिफ़ॉल्ट नहीं है।

अंत में, सुनिश्चित करें कि आप उन चीज़ों को अनावश्यक रूप से कॉल नहीं कर रहे हैं जिनके लिए व्यवस्थापकीय विशेषाधिकारों की आवश्यकता है, क्योंकि यह यूएसी को संकेत देगा।

मैं अब के बारे में सोच सकता हूं।

+1

+1 विस्तार और संगठन के लिए अपनी आंखों को प्यार किया। –

+1

मुझे लगता है कि वे रिबन का उपयोग करने की सलाह देते हैं, लेकिन उन्हें इसकी आवश्यकता नहीं है? मुझे वास्तव में नए कार्यालय की "देखो और महसूस" की परवाह नहीं है। यह मेरे लिए एक साफ इंटरफेस की तरह महसूस नहीं करता है। – NoMoreZealots

+0

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

1

कुछ खास नहीं है। पुरानी चीजें काफी काम करती हैं जैसा कि उसने किया था। कुछ नए एपीआई हैं, लेकिन कुछ भी पृथ्वी टूटने (और पुराने Win32 सम्मेलनों का पालन करने के बाद)। तो विस्टा से जो कुछ भी आप जानते हैं वह अभी भी Win7 के लिए सच है।

अब, उपयोगकर्ता अनुभव (टच स्क्रीन, पुस्तकालय (उपयोगकर्ता अनुभव सामग्री, प्रोग्रामर सामग्री नहीं) के संबंध में कुछ नए दिशानिर्देश हैं, लेकिन एपीआई शैली समान है।

3

There are new API's for each.

अतिरिक्त ज्ञान नहीं है, हालांकि यह आवश्यक नहीं किया जा सकता है, आप के साथ 64-बिट और मल्टी-थ्रेडेड अनुप्रयोग विकास कुछ नाम हैं परिचित होना चाहिए। डायरेक्ट 2 डी, .NET इत्यादि जैसे उच्च स्तरीय निर्माण, ज्ञान में समायोजन की आवश्यकता होती है, जरूरी नहीं कि निचले स्तर के एपीआई आवश्यक हों।

+1

जहां तक ​​आपके लिंक में विंडोज 7 सूची है, इसे व्यापक रूप से न लें। यह किसी भी COM इंटरफेस का उल्लेख नहीं करता है, उदाहरण के लिए, इसलिए यह वास्तव में नया क्या है इसका एक छोटा सा सबसेट है। –

+0

क्या कोई और अधिक विभेदक संसाधन है? – NoMoreZealots

2

आपके पास विकल्प है: पारंपरिक सी/सी ++ या नए नेट फ्रेमवर्क भाषाओं (सी #/वीबीनेट/पायथन.net और अधिक) का उपयोग करें। उत्तरार्द्ध के लिए, ढांचे को जानना कार्यान्वयन से कहीं अधिक महत्वपूर्ण है। पॉइंटर्स, थ्रेडिंग, बफर और मेमोरी मैनेजमेंट से आप पृथक (सामान्य रूप से) हैं और सिंटैक्स में कुछ अंतरों के अलावा एक बार जब आप ढांचे को जानते हैं तो यह भाषाओं के बीच पोर्टेबल है (यानी, यदि आप आसानी से VB.net प्रोग्रामिंग चुन सकते हैं तो आप आसानी से उठा सकते हैं एक सी # लड़का जितना अधिक होगा कि आपके ऐप्स क्या करेंगे, ढांचे के कॉल पार्ट्स हैं)। आप सी # में एक कक्षा बना सकते हैं, इसे वीबीनेट प्रोग्राम में इस्तेमाल कर सकते हैं और उदाहरण के लिए पावरहेल सेमीडलेट से उसी कक्षा को संदर्भित कर सकते हैं।

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

1

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

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