แมโครการแปลงสตริ

กล่าวถึงที่นี่แมโคแปลงสายอักขระถูกต้องสำหรับทั้ง ATL และ MFC ดูข้อมูลเพิ่มเติมในการแปลงสตริ MFC, TN059: ใช้ MFC MBCS/Unicode Conversion แมและMFC แมโครและ Globals?

ไวยากรณ์ของแมโครในการแปลงสตริงที่ไม่:

ชื่อแมโคร ( string_address )

ตัวอย่างเช่น:

A2W(lpa)

ในชื่อแมโคร ชนิดต้นทางสายอักขระที่อยู่ทางด้านซ้าย (ตัวอย่างเช่นA) และชนิดสายปลายทางที่อยู่บนด้านขวา (ตัวอย่างเช่นW) Aย่อมาจากLPSTR, OLE stands สำหรับLPOLESTR, T stands สำหรับLPTSTRและ stands WสำหรับLPWSTR?

ปานA2Wแปลงเป็นLPSTRมีLPWSTR, OLE2Tแปลงข้อLPOLESTRข้อLPTSTRและอื่น ๆ?

สายปลายทางถูกสร้างขึ้นโดยใช้_allocaยกเว้นเมื่อชนิดปลายทางคือBSTR ใช้_allocaจัดสรรหน่วยความจำออกจากกองซ้อน ดังนั้นเมื่อมีการส่งกลับของฟังก์ชัน มันเป็นอัตโนมัติล้าง?

ถ้ามีตัวCในชื่อแมโคร แมโครแปลงสตริconst ตัวอย่างเช่นW2CAแปลงการLPWSTRการLPCSTR?

หมายเหตุnbsp  เมื่อต้องการใช้แมโคแปลงสตริ ATL ระบุแมโคUSES_CONVERSIONจุดเริ่มต้นของฟังก์ชันของคุณเพื่อหลีกเลี่ยงข้อผิดพลาดของคอมไพเลอร์ ตัวอย่างเช่น(&N):

โมฆะ func (LPSTR lpsz)
{
 nbsp USES_CONVERSION
   ...
   LPWSTR x = A2W(lpsz)
   / / ทำอะไรกับ x
   ...
}(&N)

ลักษณะการทำงานของแมโครที่แปลงสตริ ATL ขึ้นกับลักษณะพิเศษ ฟในคอมไพเลอร์ถ้ามี ถ้าชนิดต้นทางและปลายทางจะเหมือนกัน ไม่มีทำแปลง คอมไพล์เลอร์ไดเรกทีฟฐานเปลี่ยนTและOLEเป็นดังนี้:

ลักษณะพิเศษฟในคอมไพเลอร์ T กลายเป็น OLE กลายเป็น
ไม่มี A W
_UNICODE W W
OLE2ANSI A A
_UNICODEและOLE2ANSI W A

ตารางต่อไปนี้แสดงรายการแมโครในการแปลงสตริ ATL?

แมโครการแปลงสตริ ATL

A2BSTR OLE2A T2A W2A
A2COLE OLE2BSTR T2BSTR W2BSTR
A2CT OLE2CA T2CA W2CA
A2CW OLE2CT T2COLE W2COLE
A2OLE OLE2CW T2CW W2CT
A2T OLE2T T2OLE W2OLE
A2W OLE2W T2W W2T

ATL แมโครและฟังก์ชันที่ส่วนกลาง

ดูเพิ่มเติม

ข้อมูล DEVMODE และแมโครการแปลงสตริ TEXTMETRIC

Index