วิธีการสร้าง DLLs ทรัพยากรการแปลสำหรับแอพลิเคชัน MFC

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 198846 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

ทรัพยากร DLLs ได้หมายความว่ามีประสิทธิภาพสำหรับการใช้ทรัพยากรในภาษาต่าง ๆ โปรแกรมประยุกต์สามารถทำการจัดหา DLL เดียวที่มีทรัพยากรผ่านการของโปรแกรมติดตั้ง เปลี่ยนเป็นภาษาอื่นจะไม่กี่อย่างง่าย ๆ โดยใช้ DLL ที่ถูกต้อง

ข้อมูลด้านล่างนี้อธิบายวิธีการที่ทำให้เป็นทรัพยากรที่แปล DLL ด้วย 5.0 c ++ Visual

ข้อมูลเพิ่มเติม

บทความนี้อธิบายวิธีการง่าย ๆ ทั่วไปสำหรับการสร้างการเพิ่มแอพลิเคชันและทรัพยากร DLLs สามารถสนับสนุนหลายภาษา โดยใช้วิธีนี้ คุณมีทรัพยากรของคุณทั้งหมดในหนึ่งแฟ้ม RC ทำให้ง่าย fairly เพื่อดูทรัพยากรที่คุณได้นำมาใช้

  1. สร้างโปรแกรมประยุกต์ AppWizard MFC เริ่มต้น (เรียกว่าMyAppในตัวอย่างนี้), และระบุภาษาอังกฤษของสหรัฐอเมริกาสำหรับภาษาทรัพยากร ใช้ไลบรารี MFCเป็น DLL ที่ใช้ร่วมกัน.
  2. แทรกค่าเริ่มต้น MFC AppWizard DLL เป็น(ในระดับบนสุดของโครงการResourceDllในตัวอย่างนี้), และมีเลือกส่วนขยาย mfc DLL (ใช้ MFC DLL ที่ใช้ร่วมกัน)สำหรับชนิดของ DLL เนื่องจากไม่มีแฟ้ม.lib ถูกสร้างขึ้นสำหรับ DLL โครงการระดับบนสุด avoids linker ปัญหาใน builds ต่อมาของการปฏิบัติการ
  3. เอาออก และลบไฟล์ออกไป RC แฟ้ม Resource.h, ResourceDll.rc2 แฟ้ม และไดเรกทอรี RES จากโครงการ ResourceDll
  4. จากนั้นProjectเมนู การเลือกนั้นเพิ่มลงในโครงการเมนูแบบผุดขึ้น และมีเลือกแฟ้ม. แทรกแฟ้ม MyApp.RC ลงในโครงการ ResourceDll
  5. สำหรับแต่ละภาษาเพิ่มเติม MyApp นั้นจะมี localized ทรัพยากรสำหรับ:

    1. จากนั้นการสร้างเมนู คลิกตั้งค่าคอนฟิกและเพิ่มโครงแบบการนำออกใช้และการดีบักใหม่ ตัวอย่างเช่น เพิ่มคำการนำออกใช้ฝรั่งเศสตั้งค่าคอนฟิก และคัดลอกการตั้งค่าจากResourceDll - Win32 นำออกใช้เพิ่มคำดีบักฝรั่งเศสตั้งค่าคอนฟิก และคัดลอกการตั้งค่าจากResourceDll - การดีบัก Win32.
    2. ในการการตั้งค่าโครงการกล่องโต้ตอบกล่อง เลือกจัดรูปแบบหลายในการการตั้งค่าสำหรับ-กล่องคำสั่งผสม เลือกวางจำหน่ายและตรวจแก้จุดบกพร่องจะตั้งค่าคอนฟิกโครงการสำหรับภาษาเฉพาะในการเลือกจัดรูปแบบของโครงการเพื่อปรับเปลี่ยนกล่องโต้ตอบ ในการทรัพยากรแท็บ เพิ่มคำนิยาม preprocessor AFX_RESOURCE_DLL และ AFX_TARG_XXX ที่เป็น XXX ตัวระบุแบบอักษรสำหรับภาษานั้น ตัวอย่างเช่น FRA สำหรับภาษาฝรั่งเศส [ฝรั่งเศส DEU สำหรับภาษาเยอรมัน และ ENU ยูเอสสำหรับภาษาอังกฤษ (เอ)]

      หมายเหตุ::ข้อกำหนด preprocessor มีเครื่องหมายจุลภาคคั่นด้วย โดยไม่มีช่องว่างระหว่างคำนิยาม
    3. ในการภาษาคำสั่งผสมกล่อง เลือกภาษาที่ใช้ในทรัพยากร

      หมายเหตุ::คุณอาจต้องการตั้งชื่อ DLLs ของคุณเพื่อช่วยระบุดังกล่าว ตัวอย่างเช่น คุณอาจต้องการเพิ่มแบบ "d" ให้ชื่อหลักการทำเครื่องหมายเป็นการดีบัก DLL และใช้ส่วนขยายของแฟ้มเฉพาะภาษาเพื่อหมายเหตุตำแหน่งที่ตั้งไว้ โปรดทราบว่า รุ่นที่ใช้ในการตรวจแก้จุดบกพร่องของการปฏิบัติการจะไม่ทำงานกับ dll ทรัพยากรรุ่นวางจำหน่าย

      สามารถทำได้ โดยการเปลี่ยนแปลงเป้าหมายของการแสดงผลที่ linker ที่ใช้สำหรับแต่ละโครงสร้างของ DLL

      1. เลือกการการเชื่อมโยงหน้าคุณสมบัติจากนั้นการตั้งค่าโครงการกล่องโต้ตอบ
      2. ในการในการการตั้งค่าสำหรับคำสั่งผสมกล่อง เน้นการตั้งค่าคอนฟิกที่คุณต้องการเปลี่ยนไดเรกทอรีการแสดงผล DLL
      3. ตรวจสอบให้แน่ใจว่าประเภท:ตั้งค่าเป็นทั่วไประบุชื่อไดเรกทอรีการแสดงผลในกล่องแก้ไขภายใต้ชื่อแฟ้มผลลัพธ์.
      ตัวอย่างเช่น สำหรับ dll ประกอบด้วยทรัพยากรที่มีการแปลสำหรับภาษาฝรั่งเศส เปลี่ยนDebug/ResourceDLL.dllเมื่อต้องการฝรั่งเศสดีบัก / ResourceDLLd.FRAสำหรับ Win32 Debug การตั้งค่าคอนฟิก และการเปลี่ยนแปลงการเปลี่ยนแปลงRelease/ResourceDLL.dllเมื่อต้องการฝรั่งเศสนำออกใช้ / ResourceDLL.FRAสำหรับการกำหนดค่าการนำออกใช้ Win32

      ใช้ DLLs เหล่านี้ คุณต้องการคัดลอก DLL ที่ต้องลงในไดเรกทอรีเดียวกับที่ MyApp.exe ใน หรือไดเรกทอรี Windows เหมาะสม และเปลี่ยนชื่อ ResourceDll.dll หรือ ResourceDllD.dll ตัวอย่าง::

      การคัดลอก ResourceDll.FRA\windows\system\ResourceDll.dll

      คุณยังสามารถระบุตำแหน่งแฟ้มทรัพยากร MyApp.res จะถูกสร้างขึ้นสำหรับแต่ละ DLL แปลไดเรกทอรี

      1. เลือกการทรัพยากรหน้าคุณสมบัติจากนั้นโครงการการตั้งค่ากล่องโต้ตอบ
      2. ในการในการการตั้งค่าสำหรับคำสั่งผสมกล่อง เน้นการตั้งค่าคอนฟิกที่คุณต้องการเปลี่ยนไดเรกทอรีการแสดงผลทรัพยากร
      3. ตรวจสอบให้แน่ใจว่าประเภท:ตั้งค่าเป็นทั่วไประบุตำแหน่งแฟ้มผลลัพธ์สำหรับทรัพยากรจะถูกสร้างขึ้นในกล่องแก้ไขภายใต้ไดเรกทอรีชื่อแฟ้มของทรัพยากร.
  6. จากนั้นProjectเมนู การเลือกการตั้งค่าและเน้นResourceDLLProject เลือกจัดรูปแบบทั้งหมดจากนั้นการตั้งค่าสำหรับกล่องคำสั่งผสม คลิกการc/C++แท็บตามด้วยการpreprocessorประเภท: เพิ่มเส้นทางสำหรับโครงการ MyApp ในนั้นเพิ่มเติมรวมไดเรกทอรีเขตข้อมูล:
  7. จากนั้นProjectเมนู การเลือกการตั้งค่าและเน้นMyAppProject เลือกจัดรูปแบบทั้งหมดจากนั้นการตั้งค่าสำหรับกล่องคำสั่งผสม คลิกการทรัพยากรแท็บ และในการข้อกำหนด preprocessorฟิลด์ เพิ่มafx_resource_dll. คำจำกัดความนี้ลบทรัพยากรทั้งหมดจาก MyApp.exe
  8. ในพื้นที่ทำงาน ResourceView เปิดแต่ละโฟลเดอร์ และ กับการ กดแป้น CTRL เลือกทรัพยากรทั้งหมดในโครงการ MyApp ตัวอย่างเช่น เลือกของคุณควรรวม IDR_MAINFRAME ในตัวเร่งและ IDD_ABOUTBOX สำหรับกล่องโต้ตอบ

    สำหรับแต่ละโครงแบบ ResourceDLL ในการแทรกเมนู คลิกคัดลอกทรัพยากรการตั้งค่าภาษาในภาษาที่เหมาะสม และกดตกลง. ขณะนี้คุณควรมีชุดของทรัพยากรสำหรับภาษา anther เสร็จสมบูรณ์ ทรัพยากร อย่างไรก็ตาม ต้องสามารถแปล

    (ถ้าคุณต้องการสร้างทรัพยากรที่มีการแปลภาษาไม่ได้อยู่ในรายการของภาษา เลือกภาษาอื่น และแก้ไขข้อความของแฟ้มทรัพยากรด้วยตนเอง หลังจากที่คุณได้ทำการเปลี่ยนแปลงเหมาะสม วงเล็บอยู่ติดกับทรัพยากรจะพูดว่า "ภาษาที่ไม่รู้จัก" และแสดงตัวระบุภาษาและ sublanguage)

    หมายเหตุ::คุณยังสามารถคัดทรัพยากร preexisting ลอกไปยังแฟ้มทรัพยากรได้ในขณะนี้ ตัวอย่างเช่น สร้าง AppWizard MFC ที่แยกต่างหากโครงการแอพลิเคชันที่ใช้ทรัพยากรภาษาฝรั่งเศส โดยใช้ตัวเลือกเดียวกันที่คุณใช้สร้าง MyApp ที่เริ่มต้นโครงการ After creating this application, close its workspace and open the MyApp project workspace and selectResourceView. Then, on theแฟ้ม:เมนู คลิกOPEN, and open the French application's RC file. Now drag/drop all of the resources from the French application into the MyApp application. These resources are already in French and need no translation.
  9. Add an HINSTANCE member variable to the application's CWinApp derived class. This will hold the DLL instance handle. ตัวอย่าง::
       HINSTANCE m_hInstResDLL;
    						


    Inside the CWinApp::InitInstance definition for your project, add the following three lines at the top of the function:

    #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 );
    						


    หมายเหตุ::It is not necessary to call AfxSetResourceHandle() at this point.
  10. Add a CMyApp::ExitInstance() member function using the Class Wizard. Add code freeing the library before the application exits. Modify the function as follows:

    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. The application is ready to build. Using the Batch Build dialog box, select the desired targets. Remember that you must copy the appropriate DLL into the a suitable location and rename it.

ข้อมูลอ้างอิง

Tech note 56 (TN056) describes use of localized MFC resources (MFC40LOC.DLL).

Tech note 57 (TN057) describes some of the designs and procedures you can use to localize your component, be it an application or an OLE control, or a DLL that uses MFC.

Tech note 23 (TN023) describes the standard resources provided with and needed by the MFC library.

For additional information about the Microsoft Foundation Classes included with Visual C++ versions 2.2 and earlier, please see the following article in the Microsoft Knowledge Base:
147149"วิธี Localize ทรัพยากรกับระดับชั้นมูลฐาน"


(c) Microsoft Corporation 1999 สงวนลิขสิทธิ์ contributions โดย Isaac Varon, Microsoft Corporation

คุณสมบัติ

หมายเลขบทความ (Article ID): 198846 - รีวิวครั้งสุดท้าย: 7 มกราคม 2554 - Revision: 2.0
ใช้กับ
Keywords: 
kbhowto kbintl kbintldev kbmt KB198846 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:198846
การปฏิเสธความรับผิดชอบในเนื้อหาของ KB ที่จะไม่มีการปรับปรุงอีกต่อไป
บทความนี้กล่าวถึงผลิตภัณฑ์ที่ Microsoft ไม่มีการสนับสนุนอีกต่อไป เนื้อหาของบทความจึงมีการนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก

ให้ข้อเสนอแนะ

 

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