几何尺寸与公差论坛

 找回密码
 注册
查看: 1954|回复: 1

【转帖】Converting Between MFC/C++ and .NET Types

[复制链接]
发表于 2008-1-27 20:10:37 | 显示全部楼层 |阅读模式
Converting Between MFC/C++ and .NET Types
By   Tom Archer


   [size=-1] Welcome to this week's installment of .NET Tips & Techniques! Each week, award-winning Architect and Lead Programmer Tom Archer from the Archer Consulting Group demonstrates how to perform a practical .NET programming task using either C# or Managed C++ Extensions.

Many .NET methods are very picky about the types that you can pass as parameters. For example, the sockets, cryptography, and several of the streaming methods require byte arrays, which you must first convert from CString objects or C++ types. In addition, despite the fact that IJW alleviates many conversion issues, several situations still require you to manually convert a .NET type to a C++ type. As a result, converting between types is frequently a sticking point for coders new to mixing MFC and .NET. This article illustrates some basic conversion code that should help you if you find yourself about to throw your monitor against the wall after the latest "can't convert x to y" compiler error message!
  Converting CString objects to .NET Byte array

CString str = _T("CString to be converted to a byte array");
Byte barr[] = new Byte[str.GetLength()];
for(int i = 0; i < str.GetLength(); i++)
barr = static_cast<Byte>(str );
  Converting String objects to C++ char array

#include <vcclr.h> // Needed for the PtrToStringChars function
//...
String* s = S"String to be converted to a char array";
const __wchar_t __pin * str = PtrToStringChars(s);
  Converting String objects to .NET Byte array

String* str = S"String to be converted to a byte array";       
Byte barr[] = new Byte[str->Length];
for(int i=0; i<str->Length; i++)
  barr = static_cast<Byte>(str->ToCharArray());
  Converting Int32 objects to managed char array

Int32 myInt = 42;
unsigned char myArray __gc[] = BitConverter::GetBytes(myInt);
  Got More?

This is by no means meant to be a complete composition of all conversions between MFC/C++ and .NET. However, it will handle the majority of the cases you face. If you would like to add a conversion, just [email="tom@archerconsultinggroup.com?subject=.NET%20Conversion%20Article"]drop me a line[/email]. If I add it to the article, I'll, of course, give you credit for the input.  About the Author

  The founder of the Archer Consulting Group (ACG), Tom Archer has been the project lead on three award-winning applications and is a best-selling author of 10 programming books as well as countless magazine and online articles.

 楼主| 发表于 2008-1-27 20:11:02 | 显示全部楼层

回复: 【转帖】Converting Between MFC/C++ and .NET Types

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-13 06:02 , Processed in 0.117462 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表