日期:2014-05-19  浏览次数:20679 次

请专家答个有难度的问题
定义了个结构
public   struct   LogFont
{
public   long   lfHeight;
public   long   lfWidth;
public   byte[]   lfFaceName   ;

}

想给public   byte[]   lfFaceName   ;   定义长度,怎么定义?
struct里不能写new   ....

------解决方案--------------------
不会C#,蒙的,呵呵~~
------解决方案--------------------
改成类好了,反正区别也不大
------解决方案--------------------
[StructLayout(LayoutKind.Sequential)]
public struct LogFont
{
public long lfHeight;
public long lfWidth;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
public byte[] lfFaceName ;

}



------解决方案--------------------
顶一下,有用啊.
------解决方案--------------------
StructLayout(LayoutKind.Sequential)]
public struct LogFont
{
public long lfHeight;
public long lfWidth;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public byte[] lfFaceName ;

}

------解决方案--------------------
mark
------解决方案--------------------
To:ouyang4683
StructLayout:控制Structure语句块的元素在内存中的排列方式,以及当这些元素被传递给外部DLL时,运行库排列这些元素的方式。

MarshalAs:可以参考下面的连接
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemRuntimeInteropServicesMarshalAsAttributeClassTopic.asp


------解决方案--------------------
学习
------解决方案--------------------
有什么用??
------解决方案--------------------
学习
------解决方案--------------------
LogFont a;
a.lfFaceName=new byte[32];

这不就好了??