यहाँ मेरी समझ है, जो कार्यान्वयन विवरण के लिए आंशिक रूप से अनुमान पर आधारित है और संबंधित है:
डॉक एक अलग प्रक्रिया में चलाता है, और आप डॉक करने के लिए अपने आवेदन से प्रक्रिया सीमा पार तुच्छता से एक मनमाना NSImage
पारित नहीं हो सकता । केवल दो प्रकार की छवियां हैं जिन्हें ठीक से पारित किया जा सकता है: मानक सिस्टम आइकन, और आपके संसाधन बंडल में आइकन। लेकिन मुझे नहीं लगता कि NSImage
इनमें से किसी के लिए काम करने के लिए जरूरी चीजें हैं।
So you're going to have to use Carbon. विशेष रूप से, आप या तो kMenuSystemIconSelectorType
साथ SetMenuItemIconHandle
उपयोग करने की आवश्यकता (शामिल किया गया कार्बन IconRef
रों, GetIconRef
के साथ प्राप्त) या kMenuIconResourceType
(CFString
रों है कि आपके आवेदन बंडल के संसाधन फ़ोल्डर में एक .icns
फ़ाइल को देखें)। (आप सिस्टम आइकन उपयोग कर रहे हैं, GetIconRef
के लिए)
प्रासंगिक हेडर <HIToolbox/MacApplication.h>
(GetApplicationDockTileMenu
के लिए), <HIToolbox/Menus.h>
(SetMenuItemIconHandle
के लिए) और <HIServices/Icons.h>
, कर रहे हैं।
untested है, लेकिन यह कुछ इस तरह दिखना चाहिए:
#include <Carbon/Carbon.h>
SetMenuItemIconHandle(
GetApplicationDockTileMenu(),
[dockMenu indexOfItem:dockMenuItem],
kMenuIconResourceType,
(Handle) CFSTR("icon.icns")
);
यह इस आसान नहीं हो सकता है; इनमें से कुछ केवल 32-बिट हो सकते हैं।
स्रोत
2012-07-08 04:12:38
"64-बिट अनुप्रयोगों के लिए उपलब्ध नहीं है।" :( – Wevah
कुछ और होना चाहिए, QuickTime, पूर्वावलोकन और XCode 64-बिट ऐप्लिकेशन हैं। –
@MatthieuRiegler कि कुछ NSDocumentController' करता है कि 'नहीं है? यह एक निजी एप्पल एपीआई का उपयोग हो सकता है। –