प्रौद्योगिकी साझेदारी

"Windows API दैनिक अभ्यासः" 9.1.5 इष्टसंसाधनम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Custom Resources इति एकः प्रकारः संसाधनः यस्य उपयोगः Windows कार्यक्रमेषु अनुप्रयोगविशिष्टदत्तांशः, चित्राणि, श्रव्यः, द्विचक्रीयसञ्चिकाः इत्यादीनां संग्रहणार्थं भवति । कस्टम् संसाधनानाम् माध्यमेन विकासकाः कार्यक्रमे सुलभप्रवेशाय उपयोगाय च अनुप्रयोगेन आवश्यकानि विविधानि संसाधनसञ्चिकाः केन्द्रीयरूपेण प्रबन्धयितुं संग्रहीतुं च शक्नुवन्ति ।

अत्र कस्टम् संसाधनानाम् विषये केचन प्रमुखाः बिन्दवः सन्ति ।

●अनुकूलसंसाधनानाम् प्रकाराः : १.

१. इष्टसंसाधनं कोऽपि अनुप्रयोगविशिष्टदत्तांशः वा सञ्चिका वा भवितुम् अर्हति, यथा चित्राणि, श्रव्यं, XML विन्याससञ्चिकाः, पाठसञ्चिकाः इत्यादयः ।

२. कस्टम् संसाधनानाम् अभिज्ञानं कस्टम् संसाधन प्रकारपरिचयकस्य उपयोगेन कर्तुं शक्यते, यथा "MY_CUSTOM_RESOURCE" ।

●अनुकूलसंसाधनानाम् निर्माणं सम्पादनं च : १.

१. इष्टसंसाधनं सामान्यतया अनुप्रयोगस्य संसाधनसञ्चिकायां (.rc) समाविष्टं भवति ।

२. संसाधनसम्पादकस्य उपयोगेन कस्टम् संसाधनं निर्मातुं सम्पादयितुं च शक्यते, यथा Visual Studio इत्यस्य Resource View ।

३. संसाधनसञ्चिकायां, भवान् प्रत्येकस्य संसाधनस्य कृते एकं अद्वितीयं संसाधनपरिचयं तत्सम्बद्धं संसाधनसञ्चिकामार्गं च निर्दिष्टुं शक्नोति ।

●अनुकूलसंसाधनानाम् अवलोकनं उपयोगं च कुर्वन्तु:

१. कोडमध्ये कस्टम् संसाधनानाम् सन्दर्भं कृत्वा उपयोगं कुर्वन्, तत्सम्बद्धानि संसाधनानि लोड् कर्तुं वा अभिगन्तुं वा संसाधनपरिचयकानां उपयोगं कर्तुं शक्नुवन्ति ।

२. कस्टम् संसाधनं लोड् कर्तुं संचालितुं च तत्सम्बद्धानि API कार्याणि (यथा LoadResource, FindResource, LockResource इत्यादीनि) उपयुज्यताम् ।

३. कस्टम् संसाधनस्य प्रकारस्य आधारेण, कस्टम् संसाधनं संसाधितुं भवान् भिन्नानि API कार्याणि (उदाहरणार्थं, इमेज संसाधनं GDI कार्याणां उपयोगं कर्तुं शक्नोति, तथा च श्रव्यसंसाधनं DirectSound कार्याणां उपयोगं कर्तुं शक्नोति) उपयोक्तुं शक्नोति

■निम्नलिखितं नमूना कोडस्निपेट् अस्ति यत् दर्शयति यत् कस्टम् संसाधनं कथं लोड् करणीयम्, कथं च उपयोक्तुं शक्यते:

#निहितः<Windows.h>

int मुख्य() ९.

{

HINSTANCE hInstance = GetModuleHandle (NULL);

HRSRC hResource = FindResource (hInstance, MAKEINTRESOURCE (IDR_MY_RESOURCE), "MY_CUSTOM_RESOURCE" // कस्टम संसाधन खोजें

HGLOBAL hResData = LoadResource (hInstance, hResource);

LPVOID pData = LockResource (hResData); // कस्टम संसाधन ताला

// कस्टम संसाधनानाम् उपयोगं कुर्वन्तु...

return 0;

}

उपरिष्टाद् उदाहरणे IDR_MY_RESOURCE इष्टसंसाधनस्य परिचयकर्ता अस्ति, तथा च तत्सम्बद्धः संसाधनसञ्चिकामार्गः संसाधनसञ्चिकायां परिभाषितः अस्ति । इष्टसंसाधनं अन्वेष्टुं FindResource फंक्शन् इत्यस्य उपयोगं कुर्वन्तु, ततः कस्टम् संसाधनं लोड् कर्तुं LoadResource फंक्शन् इत्यस्य उपयोगं कुर्वन्तु, अन्ते च संसाधनदत्तांशस्य सूचकं प्राप्तुं कस्टम् संसाधनं लॉक् कर्तुं LockResource फंक्शन् इत्यस्य उपयोगं कुर्वन्तु तदनन्तरं, संसाधनस्य प्रकारस्य आवश्यकतायाः च अनुसारं अनन्तरं संसाधनार्थं तथा कार्याणां कृते सूचकस्य pData इत्यस्य उपयोगः कर्तुं शक्यते ।

इदं महत्त्वपूर्णं यत् कस्टम् संसाधनस्य उपयोगः कथं भवति इति संसाधनप्रकारस्य अनुप्रयोगस्य आवश्यकतानां च उपरि निर्भरं भवति । विकासकाः वास्तविक आवश्यकतायाः आधारेण कस्टम् संसाधनं संसाधितुं समुचितसंसाधनप्रकारं तत्सम्बद्धानि एपिआइ कार्याणि च चयनं कर्तुं शक्नुवन्ति ।

कस्टम् संसाधनाः अनुप्रयोगानाम् कृते लचीला संसाधनप्रबन्धनपद्धतिं प्रदान्ति कस्टम् संसाधनानाम् उपयोगेन भवान् स्वस्य अनुप्रयोगं अधिकं मॉड्यूलरं, परिपालनीयं, विस्तारयोग्यं च कर्तुं शक्नोति ।

       ■in VSइष्टसंसाधनं योजयन्तु

1. संसाधनं योजयन्तु

2. "Customize" इत्यत्र क्लिक् कृत्वा "TEXT" इति संसाधनप्रकारं पूरयन्तु ।

3. संसाधनानाम् आयातं कुर्वन्तु तथा च स्वयमेव text1.bin सञ्चिकां, संसाधन ID: IDR_TEXT1 जनयन्तु

4. VS मध्ये, प्रत्यक्षतया कस्टम् कम्पाइलर् मध्ये संसाधनसञ्चिकानाम प्रविष्टं कुर्वन्तु तथा च ID परिवर्तयन्तु एकः त्रुटिसन्देशः दृश्यते: बाह्यसंसाधनं लोड् कर्तुं असमर्थः - सम्भाव्यकारणं यत् संसाधनाः आयाताः न सन्ति।

5. संसाधनदृश्यपेटिकायां संसाधनं योजयन्तु।

6. बाह्यसंसाधनसञ्चिकाः आयातयन्तु।

7. संसाधनसञ्चिकानाम ID च पुनः पूरयन्तु ध्यानं कुर्वन्तु यत् ID नाम उद्धृतेन स्ट्रिंग् "ANNABELLEE" इत्यनेन पूरयितुं आवश्यकम्।

8. केवलं सेटिङ्ग्स् सेव् कुर्वन्तु।

 

तत्र सरलतरः विधिः अस्ति, प्रत्यक्षतया संसाधनसञ्चिकां POEPOEM.rc परिवर्तयन्तु । केवलं TEXT इत्यस्य अधः रेखायाः अधः संसाधनं योजयन्तु ।

      

9.1.6 अभ्यासः 57: String resource table तथा custom resources इति

/*------------------------------------------------------------------------

057 WIN32 एपिआइ प्रतिदिनं अभ्यासं कुर्वन्तु

     उदाहरणम् 57 POEPOEM.C: स्ट्रिंग् संसाधनसारणी तथा कस्टम संसाधनम्

LoadString इति नियोग

LoadResource इति नियोग

FindResource इति नियोग

LockResource इति नियोग

अंसिअनन्तरम् स्थूल परिभाषा

(ग) www.bcdaren.com इति प्रोग्रामर

-----------------------------------------------------------------------*/

#निहितः <windows.h>

#निहितः "संसाधनम् ।ह" ।

LRESULT CALLBACK इति इति WndProc (HWND, UINT, WPARAM, लपारम्) ;

HINSTANCE hInst ;

int विनापि WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance इति,

 PSTR szCmdLine इति, int iCmdShow इति इति)

{   //संसाधनसञ्चिकानाम, शीर्षकं, त्रुटिसन्देशः च

     TCHAR szAppName इति इति इति इति इति इति[16], szCaption इति इति इति इति[64], szErrMsg इति इति इति इति[64];

     HWND hwnd;

     एम.एस.जी msg;

     WNDCLASS इति wndclass इति इति इति इति इति इति इति इति इति इति इति इति;

     //स्ट्रिंग् संसाधनं लोड् कुर्वन्तु

     LoadString इति इति(hInstance, IDS_APPNAME इति, szAppName इति इति इति इति इति इति,

          sizeof(szAppName इति इति इति इति इति इति) / sizeof(TCHAR));

     LoadString इति इति(hInstance, IDS_CAPTION इति, szCaption इति इति इति इति,

          sizeof(szCaption इति इति इति इति) / sizeof(TCHAR));

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.शैली = CS_HREDRAW इति | CS_VREDRAW इति;

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.lpfnWndProc इति = WndProc;

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.cbClsExtra इति = 0;

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.cbWndExtra इति = 0;

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.hInstance = hInstance;

//चिह्नं योजयन्तु

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.hIcon = लोडचिह्न(hInstance, MAKEINTRESOURCE(IDI_ICON1));

     //wndclass.hCursor = लोडकर्सर (NULL, IDC_ARROW);

//कस्टम मूषक सूचकः

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.hकर्सर = LoadCursor इति(hInstance,MAKEINTRESOURCE(IDC_CURSOR1));

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.hbrपृष्ठभूमि = (HBRUSH)GetStockObject(श्वेत_ब्रश);

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.lpszMenuName इति = लुप्तमूल्य;

     wndclass इति इति इति इति इति इति इति इति इति इति इति इति.lpszवर्गनाम = szAppName इति इति इति इति इति इति;

     //hInst = hदृष्टान्त;//मूलसङ्केते नास्ति तथा च कोऽपि दोषः निवेदितः न भविष्यति ।

     यदि (!रजिस्टरक्लास(&wndclass इति इति इति इति इति इति इति इति इति इति इति इति))

     {

          //LoadStringA (hInstance, IDS_APPNAME, (char *) szAppName, 1।

          // sizeof (szAppName));

          LoadStringA(hInstance, IDS_ERRMSG, (चर् *)szErrMsg इति इति इति इति,

               sizeof(szErrMsg इति इति इति इति));

          सन्देशपेटिकाA(लुप्तमूल्य, (चर् *)szErrMsg इति इति इति इति,

               (चर् *)szAppName इति इति इति इति इति इति,

               MB_ICONERROR इति);

          निर्वतनम् 0;

     }

     hwnd = विण्डो रचयतु(szAppName इति इति इति इति इति इति, szCaption इति इति इति इति,

          WS_OVERLAPPEDWINDOW इति | WS_CLIP बालकाः,

          CW_USEDEFAULT इति इति इति इति, CW_USEDEFAULT इति इति इति इति,

          CW_USEDEFAULT इति इति इति इति, CW_USEDEFAULT इति इति इति इति,

          लुप्तमूल्य, लुप्तमूल्य, hInstance, लुप्तमूल्य);

     ShowWindow इति(hwnd, iCmdShow इति इति);

     UpdateWindow इति(hwnd);

     यावद्‌ (GetMessage(&msg, लुप्तमूल्य, 0, 0))

     {

          TranslateMessage इति(&msg);

          प्रेषणसन्देशः(&msg);

     }

     निर्वतनम् msg.wपरम्;

}

LRESULT CALLBACK इति इति WndProc ( HWND hwnd, UINT सन्देशः, WPARAM wपरम्, लपारम्

lपरम्)

{

     //स्थिर चार * pText;

     स्थिरः एलपीसीएसटीआर pText;

     स्थिरः HGLOBAL hसंसाधनम्;//संसाधनसञ्चालनम् - स्मृतिखण्डं प्रति सूचयति इति हस्तकं

     स्थिरः HWND hScroll;

     स्थिरः int iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति, cxChar, cyChar, cyClient इति इति इति इति,

          iNumLines इति इति इति इति इति इति, xScroll;

     एचडीसी hdc;

     PAINTSTRUCT ps;

     RECT rect;

     पाठ्यम् तम्;

     नुदति (सन्देशः)

     {

     विषय WM_CREATE इति:

          hdc = GetDC(hwnd);

          GetTextMetrics प्राप्त करें(hdc, &तम्);

          cxChar = तम्.tmAveCharWidth इति;

          cyChar = तम्.tmउच्चता + तम्.tmबाह्यअग्रणी;

          विमोचनDC(hwnd, hdc);

//ऊर्ध्वाधरस्क्रॉलबारस्य विस्तारः पिक्सेलरूपेण

          xScroll = GetSystemMetrics प्राप्त करें(SM_CXVSCROLL इति);

          //स्क्रॉल बार उत्पन्न करें

          hScroll = विण्डो रचयतु(पाठ("स्क्रॉलबार" ।), लुप्तमूल्य,

               WS_CHILD इति | WS_VISIBLE इति | SBS_VERT,

               0, 0, 0, 0,

               hwnd, (हमेनु)1, hInst, लुप्तमूल्य);

          //पाठस्य हस्तकं प्राप्नुत

          hसंसाधनम् = LoadResource इति(hInst,

               FindResource इति(hInst, पाठ("अनाबेल्ली" .),//तस्य निर्दिष्टः प्रकारः नाम च अस्ति इति सुनिश्चितं कुर्वन्तु

निर्दिष्टे मॉड्यूले संसाधनस्य स्थानं

                    पाठ("पाठ")));

          //स्मृतौ निर्दिष्टसंसाधनस्य सूचकं पुनः प्राप्नुवन्तु

          pText = (एलपीसीएसटीआर)LockResource इति इति(hसंसाधनम्);

          iNumLines इति इति इति इति इति इति = 0;//पाठस्य पङ्क्तयः संख्यां पठन्तु

          //पाठस्य पङ्क्तयः संख्यां प्राप्नुवन्तु

          यावद्‌ (*pText != '\' && *pText != '0')//0 इत्यनेन वा समाप्तं भवति

          {

               यदि (*pText == 'न' इति ।)

                    iNumLines इति इति इति इति इति इति++;

                //ansi स्ट्रिंग् इत्यस्मिन् अग्रिमस्थानं (pointer) प्रत्यागच्छति, 16-बिट् विण्डोज इत्यत्र AnsiNext

//एकं मैक्रो परिभाषा, Win32 तस्य स्थाने CharNext इत्यस्य उपयोगं करोति (AnsiNext केवलं ansi वर्णानाम् संचालनं कर्तुं शक्नोति

//String CharNext ansi अथवा unicode string भवितुम् अर्हति)

                //pText = AnsiNext (pText);

               pText = (एलपीसीएसटीआर)CharNext इति इति((एलपीसीडब्ल्यूएसटीआर)pText);

          }

     //* pText = '0';//अत्र मूलसङ्केतः उक्तं यत् सः शून्यवर्णेन समाप्तः भवति---वास्तविकः पाठः शून्यवर्णेन न समाप्तः भवति ।

          //स्क्रॉल बार सेट् कुर्वन्तु

          ScrollRange सेट् करें(hScroll, एसबी_सीटीएल, 0, iNumLines इति इति इति इति इति इति, असत्य);

          सेट्स्क्रॉलपोस्(hScroll, एसबी_सीटीएल, 0, असत्य);

          निर्वतनम् 0;

     विषय WM_SIZE इति:

          MoveWindow इति(hScroll, LOWORD इति इति(lपरम्) - xScroll, 0,

               xScroll, cyClient इति इति इति इति = HIWORD इति इति(lपरम्), सत्यम्‌);

          सेट्फोकस(hwnd);//फोकस सेट करें

          निर्वतनम् 0;

     विषय WM_SETFOCUS इति:

          सेट्फोकस(hScroll);//स्क्रॉलबार स्लाइडर फोकस कैप्चर

          निर्वतनम् 0;

     विषय WM_VSCROLL इति:

          नुदति (LOWORD इति इति(wपरम्))  //LOWORD अवश्यं योजयितव्यः यतः सूचनासङ्केतः न्यूनशब्दे अस्ति

          {

          विषय SB_TOP:

               iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति = 0;

               भङ्गः;

          विषय SB_BOTTOM इति:

               iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति = iNumLines इति इति इति इति इति इति;

               भङ्गः;

          विषय SB_LINEUP इति:

               iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति -= 1;

               भङ्गः;

          विषय SB_LINEDOWN इति:

               iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति += 1;

               भङ्गः;

          विषय SB_PAGEUP:

               iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति -= cyClient इति इति इति इति / cyChar;

               भङ्गः;

          विषय SB_PAGEDOWN इति:

               iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति += cyClient इति इति इति इति / cyChar;

               भङ्गः;

          विषय SB_THUMBTRACK इति:

               iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति = HIWORD इति इति(wपरम्);

               भङ्गः;

          }

          iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति = अधिकतमम्(0, मि(iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति, iNumLines इति इति इति इति इति इति));

          यदि (iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति != GetScrollPos(hScroll, एसबी_सीटीएल))

          {

               सेट्स्क्रॉलपोस्(hScroll, एसबी_सीटीएल, iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति, सत्यम्‌);

               InvalidateRect(hwnd, लुप्तमूल्य, सत्यम्‌);

          }

          निर्वतनम् 0;

     विषय WM_PAINT इति:

          hdc = BeginPaint इति(hwnd, &ps);

          pText = (चर् *)LockResource इति इति(hसंसाधनम्);

          GetClientRect(hwnd, &rect);

          rect.वामः += cxChar;//स्तम्भ 2 तः आरभ्य प्रदर्शनम्

          rect.उपरितन += cyChar * (1 - iPosition इति इति इति इति इति इति इति इति इति इति इति इति इति);

          // फॉन्ट् बाह्यरेखा अग्रणी ऊर्ध्वता अन्तर्भवति । सामान्यतया, बाह्यरेखाशीर्षकाः पाठपङ्क्तौ ऊर्ध्वतायां न समाविष्टाः भवन्ति ।

          DrawTextA(hdc, pText, -1, &rect, DT_EXTERNALLEADING इति);

          EndPaint इति(hwnd, &ps);

          निर्वतनम् 0;

     विषय WM_DESTROY इति:

          FreeResource इति(hसंसाधनम्);

          PostQuitMessage इति(0);

          निर्वतनम् 0;

     }

     निर्वतनम् DefWindowProc(hwnd, सन्देशः, wपरम्, lपरम्);

}

/******************************************************************************

LoadString इति कार्यं: एकं स्ट्रिंग् संसाधनं लोड् करोति ततः समाप्तिशून्यवर्णेन सह बफरमध्ये स्ट्रिंग् प्रतिलिपिं करोति,

अथवा केवलं पठनीयं सूचकं स्ट्रिंग् संसाधनं प्रति एव प्रत्यागच्छतु ।

*******************************************************************************

LoadResource इति कार्यम् : स्मृतौ निर्दिष्टस्य संसाधनस्य प्रथमबाइट् प्रति सूचकं प्राप्तुं उपयोक्तुं शक्यते इति हन्डलं पुनः प्राप्नोति

HGLOBAL लोडसंसाधन(

HMODULE hमॉड्यूल,// यस्य मॉड्यूल् कृते एकं हन्डलं यस्य एक्जीक्यूटिव् मध्ये संसाधनं भवति ।यदि hModule NULL अस्ति तर्हि प्रणाली वर्तमानप्रक्रियायाः निर्माणार्थं प्रयुक्तात् मॉड्यूलतः संसाधनं लोड् करिष्यति

एचआरएसआरसी hResInfo//लोड् कर्तुं संसाधनं प्रति हन्डलम्

);

*******************************************************************************

FindResource इति कार्यं: निर्दिष्टे मॉड्यूले निर्दिष्टप्रकारस्य नामस्य च संसाधनस्य स्थानं निर्धारयति

एचआरएसआरसी FindResourceA(

HMODULE hमॉड्यूल,//संसाधनं युक्तं मॉड्यूल् प्रति संचालितं कुर्वन्तु

LPCSTR lpName,// 1।संसाधननाम

LPCSTR lpType// 1।संसाधनस्य प्रकारः

);

*******************************************************************************

LockResource इति कार्यम् : स्मृतौ निर्दिष्टसंसाधनस्य सूचकं पुनः प्राप्तुं

LPVOID तालासंसाधन(

HGLOBAL hResData// 1।अभिगम्यमानस्य संसाधनस्य हस्तकं

);

*******************************************************************************

अंसिअनन्तरम् स्थूल परिभाषा : १.

16विण्डोज इत्यत्र api फंक्शन् (सटीकरूपेण स्थूलपरिभाषा) यत् केवलं ANSI स्ट्रिंग्स् संसाधितुं शक्नोति;

पश्चात् यदा Win32 इति प्रादुर्भूतं तदा Microsoft इत्यनेन संगततायै CharNext इत्यस्य माध्यमेन encapsulation इति कार्यान्वितम् ।

CharNext इति इतिइदं ansi अथवा unicode string भवितुम् अर्हति ।

एतत् फंक्शन् ansi स्ट्रिंग् मध्ये अग्रिमस्थानं (pointer) प्रत्यागच्छति ।

*/

संसाधन.हhead File इति

//{{NO_DEPENDENCIES}} .

// माइक्रोसॉफ्ट विजुअल सी++ उत्पन्नं सञ्चिकाः समाविष्टाः सन्ति ।

// 057_POEPOEM.rc द्वारा उपयोगाय

//

#define IDS_APPNAME 1

#define IDS_Caption 2

#define IDS_CAPTION 3

#define IDS_ERRMSG 4

#define IDI_ICON1 1

#define IDC_CURSOR1 2

#define IDR_TEXT1 107

#define IDR_TEXT2 108

// नूतनवस्तूनाम् अग्रिमपूर्वनिर्धारितमूल्यानि

//

# ifdef APSTUDIO_INVOKED

# ifndef APSTUDIO_केवल_पठन_चिह्न

#define _APS_NEXT_RESOURCE_VALUE 126

#define _APS_NEXT_COMMAND_VALUE 40002

#define _APS_NEXT_CONTROL_VALUE 1001

#define _APS_NEXT_SYMED_VALUE 101

# endif

# endif

057_POEPOEM.rcसंसाधनस्क्रिप्ट्सञ्चिकासु ४ प्रकाराः संसाधनाः सन्ति : १.

1 . चिह्नसंसाधनम् : १.

// चिह्न

//

IDI_ICON1 ICON "D: \ कोड \ windows5.0 \ A दैनिक।"

अभ्यास \ 057_POEPOEM \ 057_POEPOEM \ icon1.ico"

2 . माउस सूचकः बिटमैप संसाधनः : १.

// कर्सर

//

IDC_CURSOR1 CURSOR "कर्सर1.cur" इति।

3 . स्ट्रिंग् संसाधनसारणी : १.

// स्ट्रिंग सारणी

//

STRINGTABLE इति

आरम्भ

IDS_APPNAME "कविता"

IDS_CAPTION """एनाबेल ली"" एडगर एलन पो द्वारा"।

IDS_ERRMSG "अस्य कार्यक्रमस्य कृते Windows NT आवश्यकम्!"

अंत

4 . इष्टसंसाधनम् : १.

// पाठ

//

ANNABELLEE TEXT "कविता.TXT"।

संचालन परिणामः : १.

चित्र 9-9 String resource table तथा custom resources

 

सारांशं कुरुत

POEPOEM.RC संसाधनस्क्रिप्ट् मध्ये, उपयोक्तृ-निर्धारितं संसाधनं TEXT प्रकाररूपेण निर्दिष्टं भवति, तथा च पाठनाम "ANNABELLEE" अस्ति: ANNABELLEE TEXT POEPOEM.TXT

WndProc मध्ये WM_CREATE सन्देशस्य संसाधनं कुर्वन्, संसाधनस्य हन्डलं FindResource तथा LoadResource इत्येतयोः माध्यमेन प्राप्तं भवति । LockResource संसाधनं ताडयति, लघु रूटीनः च सञ्चिकायां अनुवर्तमानं बैकस्लैश ( ) 0 इत्यनेन प्रतिस्थापयति । एतत् अनन्तरं WM_PAINT सन्देशे DrawText फंक्शन् इत्यस्य उपयोगस्य सुविधायै अस्ति ।

[टिप्पणी] वयं विण्डो स्क्रॉल बारस्य स्थाने उप-विण्डो स्क्रॉल-बार-नियन्त्रणस्य उपयोगं कुर्मः । उपविण्डो स्क्रॉल बार नियन्त्रणे स्वचालितं कीबोर्ड-अन्तरफलकं भवति, अतः POEPOEM मध्ये WM_KEYDOWN सन्देशस्य संसाधनस्य आवश्यकता नास्ति ।

POEPOEM त्रीणि स्ट्रिंग् अपि उपयुङ्क्ते, येषां IDs RESOURCE.H हेडर् सञ्चिकायां परिभाषिताः सन्ति । कार्यक्रमस्य आरम्भे IDS_APPNAME तथा IDS_CAPTION स्ट्रिंग् LoadString द्वारा स्मृतौ लोड् भवति:

LoadString (hlnstance, IDS_APPNAME, szAppName, 1999।

sizeof (szAppName) / आकार के (TCHAR));

LoadString (hlnstance, IDS_CAPTION, szCaption, 1999।

आकारस्य (szCaption) /आकारस्य (TCHAR));

[टिप्पणी] एतौ द्वौ आह्वानौ RegisterClass इत्यस्मात् पूर्वं भवतः । कार्यक्रमः IDS_APPNAME तथा IDS_ERRMSG स्ट्रिंग् लोड् कर्तुं LoadStringA इत्यस्य उपयोगं करोति, तथा च कस्टम् सन्देशपेटी प्रदर्शयितुं MessageBoxA इत्यस्य उपयोगं करोति:

if (!पञ्जीकरणवर्ग (&wndclass))

{

LoadStringA (hInstance, IDS_APPNAME, (चार *) szAppName, 1।

sizeof (szAppName)) ;

LoadStringA (hInstance, IDS_ERRMSG, (चार *) szErrMsg, 1999।

sizeof (szErrMsg)) ;

MessageBoxA (NULL, (चार *) szErrMsg, 1।

(char *) szAppName, MB_ICONERROR) ;

return 0 ;

}

[टिप्पणी] TCHAR स्ट्रिंग् चरतः char सूचकं प्रति परिवर्तनं बलात् ।

AnsiNext 16-बिट् विण्डोज इत्यत्र मैक्रो परिभाषा अस्ति Win32 इत्यस्य स्थाने CharNext इत्यस्य उपयोगं करोति (AnsiNext केवलं ansi स्ट्रिंग् इत्येतत् सम्भालितुं शक्नोति; CharNext ansi स्ट्रिंग् अपि च यूनिकोड स्ट्रिंग् इत्येतौ नियन्त्रयितुं शक्नोति) ।

pText = AnsiNext (pText);

प्रतिस्थापनं कृत्वा : १.

pText = (LPCSTR) CharNext ((LPCWSTR) pText);

POEPOEM द्वारा प्रयुक्ताः सर्वे ताराः संसाधनरूपेण परिभाषिताः सन्ति, अतः अनुवादकैः कार्यक्रमः सहजतया अ-आङ्ग्लसंस्करणेषु परिवर्तयितुं शक्यते ।