c++ - Does LoadBitMap() API creates paint issues? -


मेरे पास C ++ , MFC में लिखे एक विरासत प्रणाली है। मैं कोड का एक टुकड़ा देख रहा था जहां एपीआई के साथ बदल दिया गया था। कोड में लिखा गया टिप्पणी "" LoadBitmap () कर्नेल मेमोरी से पृष्ठांकित पूल का उपयोग करता है और यदि उपयोग अधिकतम सीमा तक पहुंचता है तो रंग के मुद्दों को पॉप अप होगा। इसलिए LoadImage एपीआई का इस्तेमाल किया जाना चाहिए। "

मैं इस पर थोड़ी गलती की, लेकिन अधिक जानकारी नहीं मिली। जब मैंने चेक किया, तो वे कहते हैं " ध्यान दें कि लोड बिटमैप को OEM बिटमैप्स लोड करने के लिए उपयोग नहीं किया गया है और केवल पिछड़े संगतता के लिए समर्थित है "

मेरा प्रश्न हैं: 1. वहां हैं LoadBitmap () एपीआई के साथ कोई समस्या है? हमें LoadImage () को LoadBitmap () से क्यों पसंद करना चाहिए? 2. OEM बिटमैप्स क्या है? क्या कोई समस्या है यदि मैं LoadBitmap के साथ सामान्य बीएमपी लोड करता हूं?

LoadBitmap ( ) केवल डिस्प्ले-संगत बिटमैप्स को बनाएगा, न कि डिवाइस-स्वतंत्र बिटमैप (डीआईबी)। और, जैसा कि स्वयं ही कहते हैं, शीर्ष पर, "यह फ़ंक्शन, फ़ंक्शन द्वारा स्थानांतरित किया गया है" यह लगभग आश्चर्यजनक है कि LoadBitmap () अभी भी आस-पास है, क्योंकि मुझे लगता है कि LoadImage () Windows 95 से! (यह दिखाता है कि पिछड़े-संगतता को कितना मुश्किल है!)

OEM बिटमैप सिस्टम-वाइड प्री-डिफाइन किए गए चित्र हैं जिन्हें एक नल h इंस्स्टेंस पैरामीटर और एक जादू lpBitmapName (जैसे OBM_BTNCORNERS, OBM_CHECKBOXES, आदि) पास कर अनुरोध किया जा सकता है। UI के विभिन्न हिस्सों को आकर्षित करने के लिए Windows द्वारा उपयोग किए जाने वाले ये उपयोग किए जाने वाले , लेकिन यह अब द्वारा नियंत्रित किया जाता है दोबारा, OEM बिटमैप्स एक पुरानी, ​​पुरानी बात है और "नया" व्यवहार लंबे समय तक रहा है।

जब तक आपके पास लोडबिटमैप () का उपयोग करने के लिए एक मजबूत कारण नहीं है, तो मैं इसका अनुसरण करता हूं दस्तावेज सुझाव और लोड इमेज () का उपयोग करें LoadBitmap () - बराबर व्यवहार प्राप्त करने के लिए, उपयोग करें:

  LoadImage (hInstance, lpBitmapName, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);  

नया कोड में आप शायद वास्तव में एक उपकरण-स्वतंत्र बिटमैप चाहते थे, जिसमें आप लोड इमेज () का उपयोग करने के लिए है , और अंतिम तर्क होना चाहिए "LR_CREATEDIBSECTION"। आपके मामले में लिगेसी कोड, "LR_DEFAULTCOLOR" के साथ चिपके सुरक्षित हो सकता है।


Comments