Dawid Ireno

Dawid Ireno Software Architect

Temat: Mapowania Typów Na C#

Z wykorzystaniem wbudowanych typów:

LPSTR s --> [MarshalAs(UnmanagedType.LPStr)] StringBuilder s
int* x --> ref int x
THandle --> IntPtr
DWORD x --> int x
LPARAM x --> int xDawid Ireno edytował(a) ten post dnia 25.03.08 o godzinie 22:08
Dawid Ireno

Dawid Ireno Software Architect

Temat: Mapowania Typów Na C#

Z wykorzystaniem stworzonych delegatów:

WNDENUMPROC x --> CallBack x

public delegate bool CallBack(int hwnd, int lParam);

==============================================================

using System;
using System.Runtime.InteropServices;

public delegate bool CallBack(int hwnd, int lParam);

public class EnumReportApp
{
[DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y);

public static void Main()
{
CallBack myCallBack = new CallBack(EnumReportApp.Report);
EnumWindows(myCallBack, 0);
}

public static bool Report(int hwnd, int lParam)
{
Console.Write("Window handle is ");
Console.WriteLine(hwnd);
return true;
}
}Dawid Ireno edytował(a) ten post dnia 25.03.08 o godzinie 22:07
Dawid Ireno

Dawid Ireno Software Architect

Temat: Mapowania Typów Na C#

Z wykorzystaniem stworzonych struktur:

TRect --> Win32Rect, np.

Oryginalna sygnatura:
function AdjustWindowRect(var lpRect: TRect; dwStyle: DWORD; bMenu: BOOL): BOOL; stdcall;

Sygnatura w C#:
[DllImport("user32.dll", EntryPoint="AdjustWindowRect")]
public static extern bool AdjustWindowRect(ref Win32Rect clientCorners, Int32 dwStyle, bool bMenu);

Zadeklarowana struktura:
[StructLayout(LayoutKind.Sequential)]
public struct Win32Rect
{
Int32 left;
Int32 top;
Int32 right;
Int32 bottom;
}

Następna dyskusja:

Oprogramowanie do Mapowania...




Wyślij zaproszenie do