2009-09-11 7 views
6

मैंने विजुअल स्टूडियो के साथ बनाए गए एप्लिकेशन में आइकन जोड़ने के बारे में बहुत कुछ पढ़ा है, लेकिन मुझे नहीं पता कि ग्रहण गैलीलियो/सी/मिनजीडब्ल्यू के साथ ऐसा कैसे करें।एक्लिप्स गैलीलियो सी और मिनजीडब्ल्यू के साथ बनाए गए एप्लिकेशन में आइकन कैसे जोड़ें?

क्या कोई विवरण लिख सकता है, या मुझे एक लिंक टा विवरण दे सकता है?

उत्तर

15

विंडोज़ में, आइकन के साथ-साथ कुछ अन्य तत्व (कर्सर, बिटमैप्स, ...) को संसाधन फ़ाइल में निर्दिष्ट किया जाना चाहिए, जिसे संकलित करने के बाद प्रोग्राम से जोड़ा जाएगा।

विंडोज प्रोग्राम में आइकन जोड़ने के तरीके पर पहला उदाहरण जो ग्रहण के भीतर इसका उपयोग दिखाएगा। यहाँ एक सरल कार्यक्रम है कि सिर्फ एक विंडो बनाता है, जब तक हम WNDCLASSEX भरने को देखो, आवेदन की प्रतीक संदर्भित है:

resources.h - इस फाइल को एक करने के लिए एक मूल्य निर्दिष्ट किया जा सकता है संसाधन पहचानकर्ता, और इसलिए बजाय मूल्य का उपयोग करें:

#define AppIcon 101 

अगले फ़ाइल संसाधन फ़ाइल है, तो आप, साथ ही स्वयं या से ग्रहण के भीतर इसे बना सकते हैं ग्रहण में उसे बनाने के लिए, सही निर्देशिका आप यह चाहते क्लिक करें होने के लिए (इस मामले में src है) और New -> File चुनें। वहां इच्छित नाम लिखें और Finish पर क्लिक करें। ग्रहण के भीतर से इसे संपादित करने के लिए इसे राइट क्लिक करें और Open with -> Text Editor चुनें।

resources.rc - आइकन यहाँ निर्दिष्ट किया जाएगा:

#include "resources.h" 

// The icon path I used will be needed by Eclipse. 
// If you want to use back-slashes you have to scape them (\\ instead of \): 
AppIcon ICON "../src/icon.ico" 

demoicon.c - कार्यक्रम के कोड युक्त फ़ाइल:

#include <windows.h> 
#include "resources.h" 

const char *ClassName = "DemoIcon"; 

// Declaration of the window procedure, to be used in the WNDCLASSEX struct: 
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd) { 

    WNDCLASSEX wc; 
    HWND hWnd; 
    MSG msg; 

    // Filling the structure: 
    wc.cbSize = sizeof(WNDCLASSEX); 
    wc.style = 0; 
    wc.lpfnWndProc = WindowProc; 
    wc.cbClsExtra = 0; 
    wc.cbWndExtra = 0; 
    wc.hInstance = hInstance; 
    // Remember this just loads 32x32, use LoadImage() instead for other dimensions (16x16, 48x48, ...): 
    wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(AppIcon)); 
    wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); 
    wc.lpszMenuName = NULL; 
    wc.lpszClassName = ClassName; 
    // Here we'll use LoadImage, as we need a 16x16 mini icon: 
    wc.hIconSm = LoadImage(hInstance,MAKEINTRESOURCE(AppIcon),IMAGE_ICON,16,16, LR_DEFAULTCOLOR); 

    // Registering the class: 
    if(!RegisterClassEx(&wc)) { 
     MessageBox(NULL, 
        "Could not register window.", 
        "Error", 
        MB_ICONEXCLAMATION | MB_OK); 
     return -1; 
    } 

    // Create the window using the "MainWindow" class: 
    hWnd = CreateWindowEx(WS_EX_WINDOWEDGE, 
          ClassName, 
          "Demo Icon", 
          WS_OVERLAPPEDWINDOW, 
          CW_USEDEFAULT, 
          CW_USEDEFAULT, 
          200, 
          150, 
          NULL, 
          NULL, 
          hInstance, 
          NULL); 

    // If the window was not created show error and exit: 
    if(hWnd == NULL) { 
     MessageBox(NULL, 
        "Could not create window.", 
        "Error", 
        MB_ICONEXCLAMATION | MB_OK); 
     return -1; 
    } 

    // Set the windows show state, to show it: 
    ShowWindow(hWnd, nShowCmd); 
    // Draw the window: 
    UpdateWindow(hWnd); 

    // Retrieve messages from the message queue: 
    while(GetMessage(&msg, NULL, 0, 0) > 0) { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 

    return msg.wParam; 
} 

// Implementation of the window procedure, will handle the messages: 
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { 

    switch(uMsg) { 
     case WM_CLOSE: 
      DestroyWindow(hWnd); 
      break; 
     case WM_DESTROY: 
      PostQuitMessage(0); 
      break; 
     default: 
      return DefWindowProc(hWnd, uMsg, wParam, lParam); 
    } 

    return 0; 
} 

अब, में अपने ग्रहण परियोजना स्रोत निर्देशिका सुनिश्चित करें कि आपके पास सभी फ़ाइलें हैं (उदाहरण में 3 फाइलें पहले और आइकन फ़ाइल का उल्लेख किया गया है)।

उसके बाद Project -> Properties पर जाएं।
वहां, C/C++ Build -> Settings -> Build Steps टैब पर जाएं।
वहां आपको Pre-build steps -> Command दिखाई देगा। संकलन शुरू होने से पहले आपके द्वारा भरने वाला आदेश निष्पादित किया जाएगा, इसलिए आप संसाधन फ़ाइल को संकलित करने के लिए कहेंगे। आप MinGW उपयोग कर रहे हैं के रूप में संसाधन संकलक windres है:

windres ../src/resources.rc -o ../Resources/resources.o 

आप देख सकते हैं मैं एक निर्देशिका Resources कहा जाता है में संकलित संसाधन फ़ाइल रखकर हो जाएगा, तो आप इसे छोड़ सकते हैं जहाँ आप (और इसलिए का नाम चाहते हैं फ़ाइल, इसे resources.rc नामित नहीं किया जाना चाहिए)।

अब Tool Settings टैब पर जाएं।
वहाँ, MinGW C Linker -> Miscellaneous पर जाएँ, और अन्य वस्तुओं इस मामले में पहले बनाए गए वस्तु फ़ाइल, जोड़ने आप जोड़ना चाहिए:

Resources/resources.o 

इस एक Windows अनुप्रयोग है के रूप में, पर लिंकर झंडे करने का विकल्प -mwindows जोड़ने एक ही टैब के शीर्ष।

हो गया, अपनी परियोजना का निर्माण करते समय ग्रहण पहले संसाधन फ़ाइल को संकलित करेगा और फिर जेनरेट ऑब्जेक्ट को आपकी प्रोजेक्ट की किसी अन्य ऑब्जेक्ट फ़ाइल के रूप में लिंक करेगा।

मुझे उम्मीद है कि यह पढ़ने के लिए पर्याप्त स्पष्ट है।

+0

हाय! मेरे पास एक और सवाल है: आप एक्लिप्स में * .rc फ़ाइल कैसे बना सकते हैं? यह फ़ाइल टाइप सूचीबद्ध नहीं है और जब मैं एक बना देता हूं तो यह ग्रहण के लिए सिर्फ एक सादा पाठ फ़ाइल है। तो क्या मुझे एक * .rc फ़ाइल बनाना चाहिए? –

+0

मुझे खेद है कि मैंने आपका जवाब अनचेक कर दिया है। यह बहुत अच्छा लग रहा था, मैंने वास्तव में समाधान की कोशिश करने से पहले इसे ठीक से चेक किया है (ठीक है मानक मैं यह नहीं करता, लेकिन मुझे समाधान पढ़ने से पता था कि इसे मेरे लिए प्रयास करने में काफी समय लगेगा)। जैसा कि आप मेरी पहली टिप्पणी से देख सकते हैं मुझे आरसी फाइलटाइप के साथ परेशानी हो रही है - ऐसा लगता है कि ग्रहण में यह फ़ाइल प्रकार मौजूद नहीं है। –

+1

ठीक है, इसके बारे में खेद है, मुझे भी यह लिखा होगा।ग्रहण में संसाधन फ़ाइल बनाने के लिए आप निम्न कार्य कर सकते हैं: अपनी प्रोजेक्ट की "src" निर्देशिका (उदाहरण के लिए) पर राइट क्लिक करें और "नया-> फ़ाइल" चुनें, अगले संवाद बॉक्स में इसके लिए एक नाम डालें (उदाहरण के लिए आइकन आर सी)। ग्रहण के भीतर से उस फ़ाइल को संपादित करने के लिए फ़ाइल पर राइट क्लिक करें और "टेक्स्ट एडिटर के साथ खोलें" का चयन करें, इसे खोलना चाहिए जैसे कि यह एक और स्रोत फ़ाइल थी। मैं नियमित रूप से ग्रहण का उपयोग नहीं करता, लेकिन मुझे डर है कि आपके पास संसाधन फ़ाइलों के लिए सिंटैक्स हाइलाइटिंग नहीं होगी जैसा कि पहचाना नहीं गया है। मैं इसे जोड़ने के लिए जवाब संपादित करूंगा, धन्यवाद! – Xandy

1

ग्रहण संसाधन फ़ाइलों को देखने के लिए सेट नहीं है। बग। इसलिए उनके पास प्रसंस्करण में जोड़ने के लिए भी कदम हैं। जून के लिए कदम यहां दिए गए हैं। [http://wiki.eclipse.org/CDT/User/FAQ#How_to_handle_Resource-Script-Files_.27.2A.rc.27_with_CDT.3F][1]

संसाधन-स्क्रिप्ट-फ़ाइलें '* को कैसे प्रबंधित करें। आरसी 'सीडीटी के साथ? वर्तमान में सीडीटी के साथ windres.exe को संभालना संभव नहीं है। आप प्रोजेक्ट में .rc फ़ाइल को संकलित और स्वचालित रूप से लिंक करने के लिए नहीं जोड़ सकते हैं। यह पहले से ही बगजिला में एक बग के रूप में उठाया गया है।

एक तरीका प्री-बिल्ड चरण बनाना है। पुरुषों के तहत परियोजना | गुण | सी/सी ++ - बिल्ड | सेटिंग्स | कदम बनाएं | प्री-बिल्ड चरण कमांड लाइन भरें: विंड्रेस --use-temp-file -i .. \ MyProject.rc -o .. \ MyProject_rc \ MyProject_rc.o ऑब्जेक्ट को लिंकर को ज्ञात करें। पुरुषों के तहत परियोजना | गुण | सी/सी ++ - बिल्ड | सेटिंग्स उपकरण सेटिंग्स | मिनजीडब्ल्यू सी ++ लिंकर | विविध | अन्य ऑब्जेक्ट्स आइकन 'जोड़ें' पर क्लिक करें, लाइन भरें: "सी: \ MyWorkspace \ MyProject \ MyProject_rc \ MyProject_rc.o" 'MyWorkspace' और 'MyProject' आपके उद्देश्य के लिए जो भी उपयुक्त है उसके साथ प्रतिस्थापित करें।

आपको फ़ोल्डर को जोड़ने से पहले \ MyProject_rc जोड़ना होगा।

windres.exe का मार्ग ग्रहण करने के लिए जाना जाना चाहिए।

0

मैं उन सभी आइकनों को ज़िप करता हूं जिन्हें मैं पहले प्रोजेक्ट में उपयोग करना चाहता हूं। तब ज़िप का नाम बदलें एक .jar

एक संसाधन फ़ोल्डर बनाएँ यदि आपके पास पहले मिल गया (मैं का उपयोग करें "lib") फिर संसाधन फ़ोल्डर के अंदर जार फ़ाइल havent।

तो परियोजना संपत्तियों के लिए एक सरल इसके अलावा:

राइट क्लिक करें और कॉन्फ़िगर "पथ जावा बिल्ड" द्वारा - पुस्तकालय टैब का चयन करें। पर क्लिक करें JARs बटन जोड़ें और पुस्तकालयों में icons.jar जोड़ें - फिर सहेजें।

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

+0

सवाल सी ++ के बारे में पूछ रहा है। –

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