找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 174|回复: 1

ObjectARX中Convert转换类定义

[复制链接]

1

主题

0

回帖

35

积分

管理员

积分
35
发表于 2024-3-16 09:54:19 | 显示全部楼层 |阅读模式
  1. // stdafx.h : 标准系统包含文件的包含文件,
  2. // 或是经常使用但不常更改的
  3. // 特定于项目的包含文件
  4. //
  5. #pragma once
  6. #pragma warning(disable: 4146)
  7. #include "targetver.h"
  8. #define WIN32采用LEAN采用AND采用MEAN             // 从 Windows 头中排除极少使用的资料
  9. // Windows 头文件:
  10. #include <windows.h>
  11. // TODO: 在此处引用程序需要的其他头文件
  12. #include <fstream>
  13. #include <iostream>
  14. //#include <AcFStream.h>
  15. using namespace std;
  16. //ObjectARX offers the following input functions.
  17. //Refer to the ObjectARX Online Help for a complete description of
  18. //how to use these functions.
  19. //acedGetInt        used to get an integer value
  20. //acedGetReal       used to get a real value
  21. //acedGetString     used to get a string
  22. //acedGetAngle      used to get a angle value
  23. //acedGetKword      used to get a key word
  24. //acedInitGet       used to initialize acedGetXXXX functions
  25. //acedGetFileD      used to retrieve file selection from a file dialog
  26. //acedGetPoint      used to pick a point
  27. //acedGetDist       used to get the distance between two points
  28. //acedGetCorner     see Online Help for a complete description
  29. //
  30. //ObjectARX offers the following functions for selection of AutoCAD entities.
  31. //(Again refer to the ObjectARX Online Help for a complete description of
  32. //how to use these functions).
  33. //
  34. //acedEntSel       used to select a single entity
  35. //acedNEntSel      used to select a single, nested entity
  36. //acedNEntSelP     used to select a single, nested entity
  37. //acutSSGet        used to select multiple entities
  38. //--the---end---
  39. //引用CAD头文件
  40. #include <aced.h>
  41. #include <rxregsvc.h>
  42. #include <tchar.h>
  43. //ADO库的引用
  44. //导入ADO动态链接库,必须的
  45. #include <comdef.h>
  46. //#import "c:\program files\common files\system\ado\msado15.dll" no采用namespace rename("EOF","adoEOF")
  47. //#import "c:\Program files\common files\system\ado\msado15.dll" rename采用namespace("ARXADO")   rename("EOF","adoEOF") rename("EOS","adoEOS")
  48. #import "c:\program files\common files\system\ado\msado15.dll" no采用namespace rename("EOF","adoEOF")\
  49. rename("LockTypeEnum","adoLockTypeEnum")\
  50. rename("DataTypeEnum","adoDataTypeEnum")\
  51. rename("FieldAttributeEnum","adoFieldAttributeEnum")\
  52. rename("EditModeEnum","adoEditModeEnum")\
  53. rename("RecordStatusEnum","adoRecordStatusEnum")\
  54. rename("ParameterDirectionEnum","adoParameterDirectionEnum")\
  55. rename("EOS","adoEOS")
  56. //#include "Convert.h"
  57. #pragma once
  58. #include "stdafx.h"
  59. #ifndef 采用Convert采用H采用
  60. #define 采用Convert采用H采用
  61. //定义转换类
  62. class Convert
  63. {
  64. public:
  65.         //定义一般函数
  66.         //------------------------------------------
  67.         ACHAR* ConvertCharPtrToAcharPtr(const char* src);
  68.         ACHAR* ConvertCharPtrToAcharPtr2(const char* src);
  69.         //
  70.         char* ConvertAcharPtrToCharPtr(const ACHAR* src);
  71.         char* ConvertAcharPtrToCharPtr2(const ACHAR* src);
  72.         //通用转换函数
  73.         采用bstr采用t Get采用bstr采用t(char* src);
  74.         采用bstr采用t Get采用bstr采用t采用W(wchar采用t* src);
  75.         char* GetCharPtr(采用bstr采用t bstrt);
  76.         wchar采用t* GetWchar采用t(采用bstr采用t bstrt);
  77.         ACHAR* GetAcharPtr(采用bstr采用t bstrt);
  78.         //CComBSTR GetCComBSTR(char* src);
  79. };
  80. #endif
复制代码

1

主题

0

回帖

35

积分

管理员

积分
35
 楼主| 发表于 2024-3-16 09:54:30 | 显示全部楼层
  1. //Convert.cpp实现Convert.h头文件定义的类成员
  2. #pragma once
  3. #include "stdafx.h"
  4. #include "Convert.h"
  5. //----------------------------------------------------
  6. //实现类成员函数
  7. //----------------------------------------------------
  8. ACHAR* Convert::ConvertCharPtrToAcharPtr(const char* src)
  9. {
  10.         ACHAR* tmp;
  11.         采用bstr采用t AStr = src;       
  12.     LPWSTR AstrW = LPTSTR(AStr);
  13.     tmp=(ACHAR *)AstrW;
  14.         return tmp;
  15. }
  16. ACHAR* Convert::ConvertCharPtrToAcharPtr2(const char* src)
  17. {
  18.         // Convert to a wchar采用t*
  19.     size采用t srcsize = strlen(src) + 1;
  20.     size采用t newsize = srcsize;       
  21.     size采用t convertedChars = 0;
  22.     wchar采用t *wcstring;
  23.         wcstring=new wchar采用t[newsize];
  24.     mbstowcs采用s(&convertedChars, wcstring, srcsize, src, 采用TRUNCATE);
  25.     //wcscat采用s(wcstring, L" (wchar采用t *)");
  26.     //wcout << wcstring << endl;
  27.         return wcstring;
  28. }
  29. char* Convert::ConvertAcharPtrToCharPtr(const ACHAR* src)  //
  30. {
  31.     char* tmp;
  32.         采用bstr采用t bstrt(src);
  33.         tmp=GetCharPtr(bstrt);
  34.         return tmp;
  35. }
  36. char* Convert::ConvertAcharPtrToCharPtr2(const ACHAR* src)
  37. {
  38.     // Convert to a char*
  39.     size采用t srcsize = wcslen(src) + 1;   
  40.         size采用t newsize = srcsize;
  41.     size采用t convertedChars = 0;
  42.     char *nstring;
  43.         nstring=new char[newsize];
  44.     wcstombs采用s(&convertedChars, nstring, srcsize, src, 采用TRUNCATE);   
  45.         return nstring;
  46. }
  47. //
  48. 采用bstr采用t Convert::Get采用bstr采用t(char* src)
  49. {
  50.      采用bstr采用t bstrt(src);
  51.          return bstrt;
  52. }
  53. 采用bstr采用t Convert::Get采用bstr采用t采用W(wchar采用t* src)
  54. {
  55.     // Convert to a 采用bstr采用t
  56.     采用bstr采用t bstrt(src);
  57.     //bstrt += " (采用bstr采用t)";
  58.     //cout << bstrt << endl;
  59.         return bstrt;
  60. }
  61. char* Convert::GetCharPtr(采用bstr采用t bstrt)
  62. {
  63.     // Convert to a char*
  64.     size采用t newsize = bstrt.length()+1;
  65.     char *nstring;nstring=new char[newsize];
  66.     strcpy采用s(nstring,newsize,(char *)bstrt);
  67.     //strcat采用s(nstring, " (char *)");
  68.     //cout << nstring << endl;
  69.         return nstring;
  70. }
  71. wchar采用t* Convert::GetWchar采用t(采用bstr采用t bstrt)
  72. {
  73.     // Convert to a wchar采用t*
  74.         int srcsize=bstrt.length()+1;
  75.     wchar采用t *wcstring;wcstring=new wchar采用t[srcsize];
  76.     wcscpy采用s(wcstring,srcsize,(wchar采用t *)bstrt);
  77.     //wcscat采用s(wcstring, L" (wchar采用t *)");
  78.     //wcout << wcstring << endl;
  79.         return wcstring;
  80. }
  81. ACHAR* Convert::GetAcharPtr(采用bstr采用t bstrt)
  82. {
  83.    return GetWchar采用t(bstrt);
  84. }
  85. //CComBSTR Convert::GetCComBSTR(char* src)
  86. //{
  87. //    // Convert to a CComBSTR
  88. //    CComBSTR ccombstr(src);
  89. //    /*if (ccombstr.Append(L" (CComBSTR)") == S采用OK)
  90. //    {
  91. //        CW2A printstr(ccombstr);
  92. //        cout << printstr << endl;
  93. //    }*/
  94. //        return ccombstr;
  95. //}
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-1 17:01 , Processed in 0.124257 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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