Я пытаюсь создать приложение лупы в .net с помощью API расширения Windows. У меня почти все работает, за исключением того, что фактически устанавливается уровень увеличения (который по умолчанию равен 100%). Проблема в том, что я не могу найти ни одного примера в сети, и вся документация для API - это код на C++. Это особая функция, с которой я столкнулся.API расширения Windows, .NET и матрицы
bool SetMagFactor(float magfactor)
{
MAGTRANSFORM matrix;
memset(&matrix, 0, sizeof(matrix));
matrix.v[0][0] = magfactor;
matrix.v[1][1] = magfactor;
matrix.v[2][2] = 1.0f;
return MagSetWindowTransform(hwndMag, &matrix);
}
Структура MAGTRANSFORM определяется следующим образом:
typedef struct tagMAGTRANSFORM {
float v[3] [3];
} MAGTRANSFORM, *PMAGTRANSFORM;
Наиболее запутанной частью этого является MemSet - Я не уверен, что он делает или то, что его эквивалент в .NET, но что также запутывает многоразмерный массив/матрица и как я буду обрабатывать это в .NET тоже.
Любая помощь будет принята с благодарностью.
К сожалению, это не удается, когда я передаю структуру функции MagSetWindowTransform. Я получаю странное исключение - «Исправление System.ExecutionEngineException», если я попытаюсь использовать его как LayoutKind.Auto и «Указанная запись не может быть сопоставлена с классом управляемых значений». –
LayoutKind.Explicit? –
То же самое, что и указание макета - System.ExecutionEngineException –