欢迎来到天天文库
浏览记录
ID:12917469
大小:852.50 KB
页数:58页
时间:2018-07-19
《第6讲 autocad内部命令调用及用户交互》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6讲AutoCAD内部命令调用及用户交互主讲人:刘德儿2、使用AutoCAD内部命令主要内容3、和用户交互4、选择集1、C++类型转换成C#类型1、C#调用dll时的类型转换C++(Win32)C#char**作为输入参数转为char[],通过Encoding类对这个string[]进行编码后得到的一个char[]作为输出参数转为byte[],通过Encoding类对这个byte[]进行解码,得到字符串C++Dll接口:voidCplusplusToCsharp(inchar**AgentID,outchar**AgentI
2、P);C#中的声明:[DllImport("Example.dll")]publicstaticexternvoidCplusplusToCsharp(char[]AgentID,byte[]AgentIP);C#中的调用:Encodingencode=Encoding.Default;byte[]tAgentID;byte[]tAgentIP;string[]AgentIP;tAgentID=newbyte[100];tAgentIP=newbyte[100];CplusplusToCsharp(encode.GetChar
3、s(tAgentID),tAgentIP);AgentIP[i]=encode.GetString(tAgentIP,i*Length,Length);1、C#调用dll时的类型转换HandleIntPtrHwndIntPtrint*refintint&refintvoid*IntPtrunsignedchar*refbyteBOOLboolDWORDint或uint(int更常用一些)枚举类型Win32:BOOLMessageBeep(UINTuType//声音类型);其中的声音类型为枚举类型中的某一值。C#:用户需要自己定
4、义一个枚举类型:publicenumBeepType{SimpleBeep=-1,IconAsterisk=0x00000040,IconExclamation=0x00000030,IconHand=0x00000010,IconQuestion=0x00000020,Ok=0x00000000,}C#中导入该函数:[DllImport("user32.dll")]publicstaticexternboolMessageBeep(BeepTypebeepType);C#中调用该函数:MessageBeep(BeepType
5、.IconQuestion);1、C#调用dll时的类型转换结构转换Win32:使用结构指针作为参数的函数:BOOLGetSystemPowerStatus(LPSYSTEM_POWER_STATUSlpSystemPowerStatus);Win32中该结构体的定义:typedefstruct_SYSTEM_POWER_STATUS{BYTEACLineStatus;BYTEBatteryFlag;BYTEBatteryLifePercent;BYTEReserved1;DWORDBatteryLifeTime;DWORDB
6、atteryFullLifeTime;}SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;1、C#调用dll时的类型转换C#:用户自定义相应的结构体:structSystemPowerStatus{byteACLineStatus;bytebatteryFlag;bytebatteryLifePercent;bytereserved1;intbatteryLifeTime;intbatteryFullLifeTime;}C#中导入该函数:[DllImport("kernel32.dll")]
7、publicstaticexternboolGetSystemPowerStatus(refSystemPowerStatussystemPowerStatus);C#中调用该函数:SystemPowerStatussps;….sps初始化赋值……GetSystemPowerStatus(refsps);1、C#调用dll时的类型转换字符串对于字符串的处理分为以下几种情况:1、字符串常量指针的处理(LPCTSTR),也适应于字符串常量的处理,.net中的string类型是不可变的类型2、字符串缓冲区的处理(char*),即对于
8、变长字符串的处理,.net中StringBuilder可用作缓冲区1、C#调用dll时的类型转换--字符串实例Win32:BOOLGetFile(LPCTSTRlpRootPathName);C#:函数声明:[DllImport("kernel32.dll",CharSet=
此文档下载收益归作者所有