Я пытаюсь перенести код C ++ на C #.Код предназначен для регистрации класса окна, используя RegisterClassEx
.
Код C ++ имеет объект WNDCLASSEX wcex
.У объекта wcex
есть свойство
wcex.cbSize = sizeof(WNDCLASSEX);
В C # я определил структуру как
[StructLayout(LayoutKind.Sequential)]
public struct WNDCLASSEX
{
public uint cbSize;
public uint style;
[MarshalAs(UnmanagedType.FunctionPtr)]
public PlatformInvokeGDI32.WNDPROC lpfnWndProc;
public int cbClsExtra;
public int cbWndExtra;
public IntPtr hInstance;
public IntPtr hIcon;
public IntPtr hCursor;
public IntPtr hbrBackground;
public string lpszMenuName;
public string lpszClassName;
public IntPtr hIconSm;
}
Я попытался получить размер, используя
wcex.cbSize = (uint)sizeof(WNDCLASSEX);
Функция, содержащая эту позицию, объявлена как
unsafe private void
Я надеялась, что unsafe
сделает работу проверки.Тем не менее я получаю эту ошибку в IDE:
Cannot take the address of, get the size of, or declare a pointer to a managed type ('CaptureScreen.PlatformInvokeGDI32.WNDCLASSEX')
Могу ли я превратить структуру в неуправляемую структуру?Если так, то как?Есть ли способ использовать sizeof, не делая структуру неуправляемой?Есть ли .NET-версия sizeof, которая бы работала?