Technology sharing

"Fenestra API Usu quotidiano" 9.1.5 Custom Resources

2024-07-12

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

Consuetudo Resources genus subsidii in Fenestra programmatis adhibitum est ut applicationes specialium datarum, imaginum, auditionum, imaginum binariorum, etc. Per facultates consuetas, tincidunt centraliter administrare possunt et varias subsidia reponunt, quae applicatione facilioris accessus et usus in programmate requiruntur.

Hic sunt quaedam cardinis puncta de usu facultatum;

-Types consuetudinis facultates:

1 . Facultates usitatae esse possunt aliqua applicatione notitiarum specialium vel imaginum, ut imagines, audio, XML imaginum figurarum, imaginum textilium, etc.

2. Consuetudines facultates invenire possunt utens genus resource consuetudinis identifier, ut "MY_CUSTOM_RESOURCE".

Create et recensere facultates consuetudo:

1 . Facultates usitatae typice continentur in fasciculo resource applicationis (.rc).

2. Facultates consuetae creari et emendari possunt utendo editori subsidio, ut Visual Studio Resource View.

3. In file opum, specificare potes unum identificativum et respondentem resource file iter ad singula subsidia.

Refer to and use more resources:

1 . Cum in codice indices et facultates usitatas adhibeas, identificatores subsidii uti potes ut facultates onerare vel congruentes accedere.

2. Muneribus respondentibus API utere (ut LoadResource, FindResource, LockResource, etc.) ad augendas et operandas facultates consuetas.

3. Secundum genus subsidii consuetudinis, diversis API functionibus uti potes (exempli gratia, facultates imaginum functiones GDI uti possunt, et facultates audio DirectSound functiones uti) ad processum opum consuetudo.

■Sequentia est exemplum codicis PRAECISIO ostendens quomodo onera et usum resource utendi:

#includere<Windows.h>

int principalis ()

{

HINSTANTIA = GetModuleHandle(nullus);

HRSRC hResource = FindResource(hInstance, MAKEINTRESOURCE(IDR_MY_RESOURCE), "MY_CUSTOM_RESOURCE");

HGLOBAL hResData = LoadResource(hInstance, hResource);

LPVOID pData = LockResource(hResData);

// Use facultates consuetudo...

remittere 0;

}

In exemplo superiore, IDR_MY_RESOURCE est identifier subsidii consuetudinis, et congruens fasciculi semita in lima resource definitur. Munus FindResource utere ut subsidii consuetudinis invenias, tum munus LoadResource utere ut subsidii consuetudinis oneraveris, ac tandem munus claudas utere subsidia consuetudinis ad monstratorem data subsidii obtinendum. Postmodum monstrator pData adhiberi potest ad processus et operationes subsequentes secundum genus et exigentias subsidii.

Gravis est notare quam consuetudo subsidii usus sit secundum genus subsidii et applicationis necessitates. Developers eligere possunt opportunas rationes subsidiorum et functiones API respondentes ad processum facultatum consuetudinum secundum actuales necessitates.

Consuetudines facultates praebent methodum applicationes flexibilium subsidiorum administrandi. Varia notitia et lima, quae per applicationem requiruntur, aequaliter ac faciliter accessi et in programmate tractari possunt. Adhibitis facultatibus usitatis, applicationem modulari, tractabilius et extensibile facere potes.

       ■in VS*Adde consuetudine opes in

1. addere opibus

2. Click "Mos" et imple in genus resource "textum"

3. Facultates importes et automatice generant text1.bin fasciculi, resource ID: IDR_TEXT1

4. In VS, directe intrant fasciculi nomine in consuetudine compilatoris et id modificant. Error nuntius apparet: 'Non potest externas opes onerare — ratio possibilis est quia facultates non sunt importatae.

5. facultates addere in arca visum resource.

6. Externae resource files.

7. Refice nomen fasciculi resource ac ID.

8. Justus nisi occasus.

 

Simplicior est methodus, directe mutare file resource POEPOEM.rc. Modo facultates adde sub linea sub textu.

      

9.1.6 Exercise 57

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

057 WIN32 API Exercere cotidie

     Exemplum 57 POEPOEM.C: String resource mensam et consuetudines facultates

LoadString officium

LoadResource officium

FindResource officium

LockResource officium

AnsiNext Macro definition

(c) www.bcdaren.com Programmator

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

#includerere <windows.h>

#includerere "resource.h"

LRESULT REVOCARE WndProc (HWND, UINT, WPARAM, LPARAM) ;

HINSTANTIA hInst ;

int WINAPI WinMain (HINSTANTIA hInstance, HINSTANTIA hPrevInstance,

 PSTR szCmdLine, int iCmdShow)

{   //Resource lima nomen, titulum et errorem nuntius

     TCHAR szAppName[16], szCaption[64], szErrMsg[64];

     HWND hwnd;

     MSG msg;

     WNDCLASS wndclass;

     //Onus filum opibus

     LoadString(hInstance, IDS_APPNAME, szAppName,

          sizeof " " " " "(szAppName) / sizeof " " " " "(TCHAR));

     LoadString(hInstance, IDS_CAPTION, szCaption,

          sizeof " " " " "(szCaption) / sizeof " " " " "(TCHAR));

     wndclass.style = CS_HREDRAW | CS_VREDRAW;

     wndclass.lpfnWndProc = WndProc;

     wndclass.cbClsExtra = 0;

     wndclass.cbWndExtra = 0;

     wndclass.hInstance = hInstance;

//addere icon

     wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE''(IDI_ICON1));

     //wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);

//Custom mure

     wndclass.hCursor = LoadCursor(hInstance,MAKEINTRESOURCE''(IDC_CURSOR1));

     wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

     wndclass.lpszMenuName = NULL;

     wndclass.lpszClassName = szAppName;

     // hInst = hInstance ;//nec in archetypo codice nec error affertur.

     si (!RegisterClass(&wndclass))

     {

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

          // sizeof(szAppName));

          LoadStringA(hInstance, IDS_ERRMSG, (char *)szErrMsg,

               sizeof " " " " "(szErrMsg));

          MessageBoxA(NULL, (char *)szErrMsg,

               (char *)szAppName,

               MB_ICONERROR);

          reditus 0;

     }

     hwnd = CreateWindow(szAppName, szCaption,

          WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,

          CW_USEDEFAULT, CW_USEDEFAULT,

          CW_USEDEFAULT, CW_USEDEFAULT,

          NULL, NULL, hInstance, NULL);

     ShowWindow(hwnd, iCmdShow);

     UpdateWindow(hwnd);

     dum (GetMessage(&msg, NULL, 0, 0))

     {

          TranslateMessage(&msg);

          DispatchMessage(&msg);

     }

     reditus msg.wParam;

}

LRESULT REVOCARE WndProc ( HWND hwnd, UINT nuntius, WPARAM wParam, LPARAM

lParam)

{

     //static char * pText;

     static LPCSTR pText;

     static HGLOBAL hResource;//Resource manubrio - manubrio demonstrat memoriam obstructionum

     static HWND hScroll;

     static int iPotion, cxChar, cyChar, cyClient,

          iNumLines, xScroll;

     HDC hdc******;

     PAINSTRUCT ps;

     RECT rectumumumumum;

     TEXTMETRIC tm;

     switch (nuntius)

     {

     casus WM_CREATE:

          hdc****** = GetDC(hwnd);

          GetTextMetrics(hdc******, &tm);

          cxChar = tm.tmAveCharWidth;

          cyChar = tm.tmHeight + tm.tmExternalLeading;

          ReleaseDC(hwnd, hdc******);

//Latitudo libri verticalis vectis in elementa

          xScroll = GetSystemMetrics(SM_CXVSCROLL);

          //Generale volumen talea

          hScroll = CreateWindow(TEXT("volumen Bar"), NULL,

               WS_CHILD | WS_VISIBLE | SBS_VERT,

               0, 0, 0, 0,

               hwnd, (HMENU)1, hInst, NULL);

          //Get text ansa

          hResource = LoadResource(hInst,

               FindResource(hInst, TEXT("AnnabelLee"),//Fac ut habeat speciem et nomen

Locus subsidii ad certum moduli

                    TEXT("TEXTA")));

          //Regula ad certum resource memoria recuperare

          pText = (LPCSTR)LockResource(hResource);

          iNumLines = 0;//Lege numerum lineae textus

          //Adepto numerum lineae textus

          dum (*pText != '\' && *pText != '0')//Fines cum seu 0

          {

               si (*pText == 'n')

                    iNumLines++;

                //Postero loco redit (monstratorem) in ansi chorda, AnsiNext in Fenestra XVI frenum

//Macro definitio, Win32 utitur loco CharNext (AnsiNext characteres ansi tractare non possunt

//chorda;

                //pText = AnsiNext(pText);

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

          }

     //*pText = '0';//Codex originalis hic declarat nullo charactere terminari — textus ipse non terminatur charactere nullo.

          //Set volumen talea

          SetScrollRange(hScroll, SB_CTL, 0, iNumLines, FALSUS);

          SetScrollPos(hScroll, SB_CTL, 0, FALSUS);

          reditus 0;

     casus WM_SIZE:

          MoveWindow(hScroll, LOWORD(lParam) - xScroll, 0,

               xScroll, cyClient = HIWORD(lParam), VERUM);

          SetFocus(hwnd);//Pone focus

          reditus 0;

     casus WM_SETFOCUS:

          SetFocus(hScroll);//Capere scrollbar labor lapsus focus

          reditus 0;

     casus WM_VSCROLL:

          switch (LOWORD(wParam))  //LOWORD addendum est quod notificatio codicis in verbo humili

          {

          casus SB_TOP:

               iPotion = 0;

               confractus;

          casus SB_BOTTOM:

               iPotion = iNumLines;

               confractus;

          casus SB_LINEUP:

               iPotion -= 1;

               confractus;

          casus SB_LINEDOWN:

               iPotion += 1;

               confractus;

          casus SB_PAGEUP:

               iPotion -= cyClient / cyChar;

               confractus;

          casus SB_PAGEDOWN:

               iPotion += cyClient / cyChar;

               confractus;

          casus SB_THUMBTRACK:

               iPotion = HIWORD(wParam);

               confractus;

          }

          iPotion = max(0, min(iPotion, iNumLines));

          si (iPotion != GetScrollPos(hScroll, SB_CTL))

          {

               SetScrollPos(hScroll, SB_CTL, iPotion, VERUM);

               InvalidateRect(hwnd, NULL, VERUM);

          }

          reditus 0;

     casus WM_PAINT:

          hdc****** = BeginPaint(hwnd, &ps);

          pText = (char *)LockResource(hResource);

          GetClientRect(hwnd, &rectumumumumum);

          rectumumumumum.left += cxChar;//Propono incipiens a columna 2

          rectumumumumum.top += cyChar * (1 - iPotion);

          // Includes font linee exterioris altitudinis ducens. Communiter lineae exteriores capitis in altitudine lineae textus non comprehenduntur.

          DrawTextA(hdc******, pText, -1, &rectumumumumum, DT_EXTERNALLEADING);

          EndPaint(hwnd, &ps);

          reditus 0;

     casus WM_DESTROY:

          FreeResource(hResource);

          PostQuitMessage(0);

          reditus 0;

     }

     reditus DefWindowProc(hwnd, nuntius, wParam, lParam);

}

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

LoadString Munus: chorda subsidia onerat ac deinde filum in quiddam imitatur charactere nullo terminante;

Vel lectu-tantum monstratorem reddere ad ipsum auxilium chordarum.

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

LoadResource Munus: Retrieves ansam quod monstratorem ad primam byte certa resource memoria obtineri potest

HGLOBAL LoadResource(

HMODULE hModule,// Manubrium ad modulum cuius exsecutabile resource continet.Si hModule nulla est, ratio subsidii e modulo ad processum currentem creandum oneretur

HRSRC hResInfo//Manubrium ad onus resource

);

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

FindResource Munus: determinat locum in eopia ex consimili genere et nomine ad certum moduli

HRSRC FindResourceA(

HMODULE hModule,//Modulus tractamus continet resource

LPCSTR lpName,//resource nomen eius

LPCSTR lpType//Genus resource

);

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

LockResource Munus: Retrieve monstratorem certum resource memoria

LPVOID LockResource(

HGLOBAL hResData//Manubrium ad resource ut accessed

);

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

AnsiNext Macro definitio:

16Munus api in Windows (definitio macro definitio esse potest) qui tantum processus chordarum ANSI potest;

Postea, cum Win32 apparuit, Microsoft encapsulation per CharNext ad compatibilitatem implevit.

CharNextPotest esse ansi vel unicode chorda.

Hoc munus redit proximum positionem (monstratoris) in chorda ansi.

*/

Resource.hCaput File

//{{NO_DEPENDENCIES}}

Microsoft Visual C++ Generata files includit.

// Ad usum per 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

// Deinde default values ​​​​pro novis obiecti

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 126

#define _APS_NEXT_COMMAND_VALUE 40002

#define _APS_NEXT_CONTROL_VALUE MI

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

057_POEPOEM.rcResource script files continent IV genera opum:

1 . Facultates icon;

// Icon

//

IDI_ICON1 ICON "D:\code\windows5.0\ A cotidie

praxis \057_POEPOEM\057_POEPOEM\icon1.ico"

2 . Muris bitmap monstratorem resource:

// Cursor

//

IDC_CURSOR1 CURSOR "cursor1.cur"

3 . Mensa resource filum:

// String Table

//

STRINGTABLE

INCIPIO'

IDS_APPNAME "Poem"

IDS_CAPTION "" "Annabel Lee" ab Edgar Allan Poe"

IDS_ERRMSG "Haec programma poscit Windows NT!"

FINIS

4 . Opum consuetudo:

// TEXT

//

ANNABELLEE TEXT "POEPOEM.TXT"

operatio effectus;

Figure 9-9 String resource table and custom resources

 

Summatim

In scripto resource scripto, subsidium utentis definitum ut typum TEXTUS specificatur, et nomen textus "ANNABELLEE": ANNABELLEE TEXT POEPOEM.TXT

Cum epistulam WM_CREATE in WndProc dispensando, manubrium opum per FindResource et LoadResource obtinetur. LockResource subsidium claudit, et parva translaticia in tabella cum 0. retinacula reponit. Hoc est faciliorem reddere usum functionis Drawi in subsequenti WM_PAINT nuntio.

Librum sub-fenestram locationis in loco fenestrae loco vectis utimur. Subwindow libri talea imperium in claviaturae interfacies latae habet, quare non opus est ut nuntius WM_KEYDOWN in POEPOEM emittat.

POEPOEM etiam tribus chordis utitur, quorum IDs in fasciculo RESOURCE.H capitis lima definiuntur. In principio programmatis IDS_APPNAME et IDS_CAPTION chordae in memoriam oneratae sunt ab LoadString:

LoadString (hlnstance, IDS_APPNAME, szAppName:

sizeof (szAppName) / sizeof (TCHAR));

LoadString (hlnstance, IDS_CAPTION, szCaptio;

sizeof (szCaption) / sizeof (TCHAR))

Haec duo nomina praecedunt RegisterClass. Programma LoadStringA utitur ut chordas IDS_APPNAME et IDS_ERRMSG onerat, et MessageBoxA utitur ad cistam relatum modum ostendens:

si (! RegisterClass (& wndclass))

{

LoadStringA (hInstantia, IDS_APPNAME, (char*) szAppName,

sizeof (szAppName));

LoadStringA (hInstance, IDS_ERRMSG, (char*) szErrMsg,

sizeof (szErrMsg));

MessageBoxA (NULL, (char*) szErrMsg,

(char*) szAppName, MB_ICONERROR) ;

redire 0 ;

}

Vis conversio a chorda TCHAR variabilis ad regulam char.

AnsiNext definitio macro in Fenestra XVI frenum utitur. Win32 utitur CharNext loco (AnsiNext tantum chordas ansas tractare potest; CharNext chordas et chordas unicodae tractare potest).

pText = AnsiNext(pText);

Repone cum:

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

Omnes chordae, quae a POEPOEM adhibitae sunt, facultates definiuntur, ut propositum ab interpretibus in versiones non-anglicas facile possit converti.