C#类型转换问题

问题描述

用C#做的TrueTYPE字体读取,参考C++的代码,想把其转到C#下,遇到些技术问题,请各指点一二:C++#defineGHND(GMEM_MOVEABLE|GMEM_ZEROINIT)HANDLEhMem;hMem=GlobalAlloc(GHND,dwSize);lpph=(LPTTPOLYGONHEADER)GlobalLock(hMem);C#IntPtrhMem=Marshal.AllocHGlobal(bufferSize);lpph=(GLYPHMETRICS)GlobalLock((HandleRef)hMem);类型转换不正确

解决方案

解决方案二:

解决方案三:
自己顶一下,高手在哪儿?
解决方案四:
自己顶一下,高手在哪儿?
解决方案五:
自己顶一下,高手在哪儿?
解决方案六:
http://bbs.csdn.net/topics/390114478
解决方案七:
帮顶!
解决方案八:
谢谢caozhy不过,我主要是取TrueTYPE中的曲线控制点,目的是绘制出轮廓曲线,最后要转为刻字的程序,不知有无好的建议。再次感谢你的回复。
解决方案九:
LPTTPOLYGONHEADER是指针类型,GlobalLock的返回值的类型也是指针类型,所以可以强制转换。GLYPHMETRICS是怎么定义的?它是指针吗?
解决方案十:
u010936098:谢谢啊lpph=(GLYPHMETRICS)GlobalLock((HandleRef)hMem);我这儿有个疏忽,应该是lpph=(TTPOLYGONHEADER)GlobalLock((HandleRef)hMem);一直有报警,就修改类型尝试解决,最后发帖的也错了。抱歉。publicstructTTPOLYGONHEADER{intcb;intdwType;PointFpfxStart;}
解决方案十一:
最新的分析参考看过一片文章,对照发现在DLL定义时有些问题。原来是:publicstaticexternIntPtrGlobalLock(HandleRefhandle);后来改为这样的表达。publicstaticexternIntPtrGlobalLock(IntPtrhandle);现在的问题还是这段有报警,lpph=(TTPOLYGONHEADER)GlobalLock(hMem);不过,我感觉应该是C++代码中用了指针,这儿不好直接用的。各位有啥好的建议。

时间: 2024-09-11 14:49:15

C#类型转换问题的相关文章

springMVC4(9)属性编辑器剖析入参类型转换原理

我们通过Http请求提交的参数都以字符串的形式呈现,但最终在springMVC的方法入参中,我们却能得到各种类型的数据,包括Number.Boolean.复杂对象类型.集合类型.Map类型等,这些都是springMVC内置的数据类型转换器帮我们完成的.springMVC的将请求数据绑定到方法入参的流程如下所示: Created with Raphaël 2.1.0数据绑定流程图解ServletRequestServletRequestDataBinderDataBinderConversionS

C#中的类型转换

转换 C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名.数值类型间相互转换.字符的 ASCII 码和 Unicode 码.数值字符串和数值之间的转换.字符串和字符数组/字节数组之间的转换.各种数值类型和字节数组之间的转换.十六进制数输出以及日期型数据的一些转换处理,在这里与大家分享-- 1. 装箱.拆箱还是别名 许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程.许多其它变量类型也是

Swift数据类型及数据类型转换

整型      Swift 提供 8.16.32.64 位形式的有符号及无符号整数.这些整数类型遵循 C 语言的命名规 约,如 8 位无符号整数的类型为 UInt8,32 位 有符号整数的类型为 Int32.与 Swift 中的所有 类型一样,这些整数类型的名称以大写字母开 头.   Swift 还提供了一个整数类型Int:      在 32 位平台,Int 与 Int32 宽度一致.      在 64 位平台,Int 与 Int64 宽度一致.              Swif

emit-dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性

问题描述 dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性 object item3 = ((IDataRecord)this)[num8]; if (item3 is DBNull) { } else { string str1 = item3 as string; str = str1; if (str1 == null) { pluginType = (PluginType)Convert.ToByte(item3); } else { plugin

C++中四种显示类型转换总结

#include <iostream> using namespace std;   /*  *四种显示类型转换  **/   int main(){      /* static_case 类型转换*/     double a=1.1213;     int b=static_cast<int>(a);     class base{};     class father:public base{};     father f;     base ba=static_cast&

ado net-Datatable dt 接受 sqldatereader 总是出现类型转换失败

问题描述 Datatable dt 接受 sqldatereader 总是出现类型转换失败 DAL 是用 sqldatereader 写的 在Load cs里面 Datatable dt 接受 sqldatereader ## 总是出现类型转换失败 如 List u= DAL.sqldatereader .... Datatable dt= DAL.sqldatereader.... 都失败 解决方案 本来就不能这么转换,你可以写 List<user> u = new List<user

这样的的类型转换要怎么破

问题描述 这样的的类型转换要怎么破 解决方案 在后面加上Select(x => new KeyValuePair<string string>(x.某个字段 x.某个字段)).ToList()

小心MySQL的隐式类型转换陷阱

1. 隐式类型转换实例 今天生产库上突然出现MySQL线程数告警,IOPS很高,实例会话里面出现许多类似下面的sql:(修改了相关字段和值) SELECT f_col3_id,f_qq1_id FROM d_dbname.t_tb1 WHERE f_col1_id=1226391 and f_col2_id=1244378 and f_qq1_id in (12345,23456,34567,45678,56789,67890,78901,89012,90123,901231,901232,90

java中举个向上类型转换,向下类型转换的例子瞧瞧

问题描述 java中举个向上类型转换,向下类型转换的例子瞧瞧 java中举个向上类型转换,向下类型转换的例子看看,谢谢.类型的上下转换仅限父类和子类之间吗基本数据类型之间的转换有上下类型转换这一种说法吗 解决方案 通俗地说,由于继承关系的存在,父类拥有的,子类也拥有:而子类额外有的,父类肯定没有.例如:父类为动物,那么子类阿猫肯定是动物,但是动物不一定是阿猫. Animal a = new Animal();Cat cat = new Cat();a = cat;//可以将子类对象付给父类对象,

Delphi的类型转换

Delphi是一种强类型转换的语言.在VC中,赋值符用″=″,例如x=1;到了Delphi赋值符就变成了″:=″,例如x:=1. 从赋值时用符号″:=″而不用″=″,就隐约可见Delphi对类型匹配要求之严,即赋值符右边的类型一定要和左边一致. 用惯了VB或VC的程序员,初用Delphi,稍不留神,就会出现类型不匹配的错误.对初学者而言,类型转换也是学习Delphi的重点和难点,为此本文特对Delphi的类型转换做一总结,以供读者参考. 一.数的类型转换 把表达式的类型从一种类型转化为另一种类型