Làm th? nào đ? t?o ra b?n đ?a hóa Resource DLLs cho ?ng d?ng MFC

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 198846 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

DLL tài nguyên là m?t phương ti?n hi?u qu? đ? s? d?ng tài nguyên ? khác nhau ngôn ng?. Các ?ng d?ng có th? cung c?p m?t DLL duy nh?t mà đ? b?n đ?a hoá tài nguyên thông qua chương tr?nh thi?t l?p c?a h?. Thay đ?i đ? ngôn ng? khác là m?t v?n đ? đơn gi?n c?a vi?c s? d?ng đúng DLL.

Các thông tin dư?i đây th?o lu?n v? làm th? nào đ? th?c hi?n m?t DLL tài nguyên b?n đ?a hoá v?i Visual c ++ 5.0.

THÔNG TIN THÊM

Bài vi?t này mô t? m?t phương pháp d? dàng, chung cho t?o ra m?t ?ng d?ng và tài nguyên DLLs kh? năng h? tr? nhi?u ngôn ng?. B?ng cách s? d?ng phương pháp này, b?n có t?t c? các ngu?n l?c c?a b?n trong m?t file RC, làm cho nó khá d? dàng đ? xem nh?ng g? tài nguyên b?n đ? th?c hi?n.

  1. T?o m?t ?ng d?ng MFC AppWizard m?c đ?nh (đư?c g?i là MyApp trong này Ví d?), và ch? đ?nh Ti?ng Anh M? cho ngôn ng? ngu?n l?c. S? d?ng MFC thư vi?n như m?t DLL dùng chung.
  2. Chèn m?t m?c đ?nh MFC AppWizard DLL như m?t d? án c?p cao nh?t)ResourceDll trong ví d? này), và ch?n MFC ph?n m? r?ng DLL (s? d?ng chia s? MFC DLL) Đ?i v?i lo?i DLL. V? không có t?p tin .lib đư?c t?o ra cho t?p DLL, m?t d? án c?p cao nh?t đ? tránh nh?ng v?n đ? linker trong sau đó xây d?ng c?a t?p tin th?c thi.
  3. H?y b? và xóa các t?p tin RC, các t?p tin Resource.h, ResourceDll.rc2 t?p tin và thư m?c RES t? d? án ResourceDll.
  4. T? các Dự án tr?nh đơn, ch?n các Thêm vào d? án tr?nh đơn b?t lên và ch?n T?p tin. Chèn các t?p tin MyApp.RC vào d? án ResourceDll.
  5. Đ?a phương cho m?i ngôn ng? b? sung r?ng MyApp s? có hóa ngu?n l?c cho:

    1. T? các Xây d?ng tr?nh đơn, nh?p vào C?u h?nh và thêm m?t m?i Phát hành và g? l?i c?u h?nh. Ví d?, thêm m?t Phiên b?n ti?ng Phápc?u h?nh và sao chép các thi?t l?p t? ResourceDll - Win32 Phiên bản và thêm m?t Pháp Debug c?u h?nh và b?n sao c?a nó cài đ?t t? ResourceDll - Win32 Debug.
    2. Trong các Thi?t l?p d? án h?p tho?i, ch?n Nhi?u c?u h?nh, trong các Thi?t đ?t cho h?p combo. Ch?n c? vi?c phát hành và g? l?i d? án c?u h?nh cho m?t ngôn ng? c? th? trong các Ch?n D? án các c?u h?nh đ? s?a đ?i h?p tho?i. Trong các Tài nguyên tab, thêm các đ?nh ngh?a preprocessor AFX_RESOURCE_DLL và AFX_TARG_XXX, nơi XXX là trong m?t b?c thư specifier cho ngôn ng?. Cho Ví d?, FRA cho Pháp [Pháp, DEU cho Đ?c, và ENU ENU cho ti?ng Anh (Hoa K?)].

      CHÚ Ý: Các đ?nh ngh?a preprocessor có d?u ph?y ngăn cách không có không gian gi?a đ?nh ngh?a.
    3. Trong các Ngôn ng? h?p combo, ch?n ngôn ng? đư?c s? d?ng trong các ngu?n tài nguyên.

      CHÚ Ý: B?n có th? mu?n tên c?a b?n DLLs đ? giúp xác đ?nh chúng. Ví d? b?n có th? mu?n thêm m?t "d" tên g?c đ? đánh d?u nó như m?t g? l?i DLL, và s? d?ng ph?n m? r?ng t?p tin ngôn ng? c? th? đ? lưu ? mi?n đ?a phương. Lưu ? r?ng m?t phiên b?n g? l?i c?a t?p tin th?c thi s? không làm vi?c v?i m?t b?n phát hành Phiên b?n c?a t?p dll tài nguyên.

      Đi?u này có th? đư?c th?c hi?n b?ng cách thay đ?i đ?u ra nh?m m?c tiêu mà linker s? d?ng cho m?i xây d?ng c?a DLL.

      1. Ch?n các Liên k?t Trang thu?c tính t? các Thi?t l?p d? ánh?p tho?i.
      2. Trong nh?ng năm các Thi?t đ?t cho combo-box, n?i b?t các c?u h?nh mà b?n mu?n thay đ?i s?n lư?ng DLL thư m?c.
      3. Đ?m b?o Th? lo?i đư?c thi?t l?p đ? T?ng quát và ch? đ?nh các đ?u ra tên thư m?c trong h?p s?a đ?i theo Tên t?p đ?u ra.
      Ví d?, cho m?t dll có ngu?n tài nguyên b?n đ?a hoá cho Pháp, bi?n đ?i Debug/ResourceDLL.dll đ? French Debug / ResourceDLLd.FRA cho Win32 g? l?i c?u h?nh và thay đ?i thay đ?i Release/ResourceDLL.dll đ? Pháp phiên b?n / ResourceDLL.FRA Đ?i v?i c?u h?nh Win32 Phiên b?n.

      S? d?ng các dll, b?n ph?i sao chép các mong mu?n DLL vào cùng m?t thư m?c mà MyApp.exe là trong, ho?c m?t thích h?p Windows thư m?c, và đ?i tên nó đ? ResourceDll.dll ho?c ResourceDllD.dll. Ví dụ:

      b?n sao ResourceDll.FRA\windows\system\ResourceDll.dll

      B?n c?ng có th? ch? đ?nh thư m?c nơi t?p ngu?n l?c, MyApp.res, s? đư?c t?o ra cho m?i DLL b?n đ?a hóa.

      1. Ch?n các Tài nguyên Trang thu?c tính t? các Dự án thi?t đ?t h?p tho?i.
      2. Trong nh?ng năm các Thi?t đ?t cho combo-box, n?i b?t các c?u h?nh mà b?n mu?n thay đ?i s?n lư?ng tài nguyên thư m?c.
      3. Đ?m b?o Th? lo?i đư?c thi?t l?p đ? T?ng quát và ch? đ?nh các thư m?c nơi t?p đ?u ra cho các ngu?n l?c s? t?o ra trong h?p s?a đ?i theo Tên t?p tin tài nguyên.
  6. T? các Dự án tr?nh đơn, ch?n Thiết đặt và làm n?i b?t các ResourceDLL d? án. Ch?n T?t c? các c?u h?nh t? các Thiết đặt Cho h?p combo. B?m vào các C/C ++ tab ti?p theo c?a nó Preprocessorth? lo?i. Thêm đư?ng cho d? án MyApp trong các B? sung bao g?m thư m?c l?nh v?c.
  7. T? các Dự án tr?nh đơn, ch?n Thiết đặt và làm n?i b?t các MyAppd? án. Ch?n T?t c? các c?u h?nh t? các Thi?t đ?t choh?p combo. B?m vào các Tài nguyên tab, và trong các Preprocessor đ?nh ngh?a trư?ng, thêm AFX_RESOURCE_DLL. Đ?nh ngh?a này lo?i b? t?t c? các ngu?n l?c t? MyApp.exe.
  8. Trong ResourceView workspace, m? m?i c?p và, v?i CTRL phím ép, ch?n t?t c? các ngu?n l?c trong d? án MyApp. Ví d?, l?a ch?n c?a b?n nên bao g?m m?t IDR_MAINFRAME cho máy gia t?c và IDD_ABOUTBOX cho h?p tho?i.

    Cho m?i c?u h?nh ResourceDLL, trên các Chèn tr?nh đơn, Nh?p vào B?n sao tài nguyên, thi?t l?p ngôn ng? đ? các ngôn ng? thích h?p, và báo chí Ok. Bây gi? b?n nên có m?t b? hoàn ch?nh các tài nguyên cho ngôn ng? bao ph?n. Các ngu?n l?c, tuy nhiên, ph?i đư?c d?ch.

    (N?u không ph?i là ngôn ng? mà b?n mu?n t?o tài nguyên b?n đ?a hoá trong danh sách các ngôn ng?, ch?n ngôn ng? khác và t? s?a các văn b?n c?a t?p tin tài nguyên. Sau khi b?n đ? th?c hi?n nh?ng thay đ?i thích h?p, d?u ngo?c đơn bên c?nh đ?n tài nguyên s? nói "Không r? ngôn ng?" và hi?n th? danh các ngôn ng? và sublanguage tính.)

    CHÚ Ý: B?n c?ng có th? sao chép t? trư?c ngu?n l?c đ? t?p tin tài nguyên t?i Th?i gian này. Ví d?, t?o ra m?t AppWizard MFC riêng bi?t d? án ?ng d?ng s? d?ng các ngu?n tài nguyên ti?ng Pháp b?ng cách s? d?ng các l?a ch?n cùng m?t b?n s? d?ng đ? t?o ra MyApp đ?u tiên d? án. Sau khi t?o ?ng d?ng này, đóng c?a nó workspace và m? MyApp d? án workspace và ch?n ResourceView. Sau đó, vào các Tệp tr?nh đơn, nh?p vào M?, và m? ?ng d?ng pháp RC t?p. Bây gi? kéo/th? t?t c? các ngu?n tài nguyên t? ti?ng Pháp ?ng d?ng vào ?ng d?ng c?a MyApp. Các ngu?n tài nguyên đang đ? có trong ti?ng Pháp và c?n không có b?n d?ch.
  9. Thêm m?t bi?n HINSTANCE thành viên vào các ?ng d?ng CWinApp có ngu?n g?c l?p. Đi?u này s? t? ch?c x? l? trư?ng h?p DLL. Ví dụ:
       HINSTANCE m_hInstResDLL;
    						


    Bên trong đ?nh ngh?a CWinApp::InitInstance cho d? án c?a b?n, thêm các sau ba d?ng ? trên cùng c?a ch?c năng:

    #ifdef _DEBUG
       // Load the debug version of the localized resources.
       m_hInstResDLL = LoadLibrary("ResourceDlld.dll");
    #else
       // Load the release version of the localized resources.
       m_hInstResDLL = LoadLibrary("ResourceDll.dll");
    #endif
       ASSERT( m_hInstResDLL != NULL );
    						


    CHÚ Ý: Nó không ph?i là c?n thi?t đ? g?i cho AfxSetResourceHandle() t?i đây đi?m.
  10. Thêm m?t ch?c năng thành viên CMyApp::ExitInstance() b?ng cách s? d?ng các l?p h?c Thu?t s?. Thêm m? gi?i phóng thư vi?n trư?c khi thoát ?ng d?ng. S?a đ?i các ch?c năng như sau:

    int CMyApp::ExitInstance()
    {
       // In case you load multiple DLL's make sure to free them,
       // and avoid calling FreeLibrary with a NULL pointer.
    
       FreeLibrary(m_hInstResDLL);
       return CWinApp::ExitInstance();
    }
    						


  11. ?ng d?ng đ? s?n sàng đ? xây d?ng. S? d?ng lô xây d?ng h?p tho?i, ch?n các m?c tiêu mong mu?n. H?y nh? r?ng b?n ph?i sao chép DLL thích h?p vào các v? trí thích h?p và đ?i tên nó.

THAM KH?O

Công ngh? lưu ? 56 (TN056) mô t? s? d?ng tài nguyên b?n đ?a hoá MFC (MFC40LOC.DLL).

Lưu ? công ngh? 57 (TN057) mô t? m?t s? m?u thi?t k? và th? t?c c?a b?n có th? s? d?ng b?n đ?a hoá thành ph?n c?a b?n, có th? là m?t ?ng d?ng ho?c m?t OLE đi?u khi?n, ho?c m?t DLL s? d?ng MFC.

Công ngh? lưu ? 23 (TN023) mô t? các ngu?n tài nguyên tiêu chu?n cung c?p cùng v?i và c?n thi?t b?i thư vi?n MFC.

Đ? thêm thông tin v? các l?p n?n t?ng c?a Microsoft có Visual C++ Phiên b?n 2.2 trong và trư?c đó, xin vui l?ng xem bài vi?t sau trong cơ s? ki?n th?c Microsoft:
147149 "Làm th? nào đ? b?n đ?a hoá tài nguyên v?i các l?p h?c Foundation"


(c) t?p đoàn Microsoft 1999, t?t c? các quy?n. Nh?ng đóng góp c?a Isaac Varon, Microsoft Corporation.

Thu?c tính

ID c?a bài: 198846 - L?n xem xét sau cùng: 20 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
T? khóa: 
kbhowto kbintl kbintldev kbmt KB198846 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:198846
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com