Когда инициализируется API увеличения и вызывается метод «MagSetFullscreenColorEffect», экран автоматически меняет цвета в соответствии с вызванным вами массивом. Для этого требуется относительно небольшой код:
InitializeComponent();
if (!NativeMethods.MagInitialize())
{
NativeMethods.MagInitialize();
}
NativeMethods.MagSetFullscreenColorEffect(Negative);
Это сразу сделало экран отрицательным, подразумевая, что Magnification API уже создает полноэкранное окно перехода по щелчку. Я хотел бы знать, как я могу получить дескриптор этого окна и ссылаться на него, чтобы изменить цвет на новый массив (IE, «NotNegative»)
Приведенный ниже код демонстрирует, где я пытаюсь использовать " GetForeGroundWindow », чтобы захватить HWND API увеличения, а затем попробуйте изменить цвет этого окна с помощью метода« MagSetColorEffect ». Это не сработало. Вопросы:
- Как найти дескриптор, который использует Magnification API?
- Когда Windows API создает этот дескриптор / окно? Во время инициализации или в методе magsetfullscreen?
- Почему приведенный ниже код не меняет цвет моего окна?
ПРИМЕЧАНИЕ. Я знаю, что могу просто снова изменить цвет, используя MagnificationSetFullscreen. Я также знаю, что могу создать собственное окно увеличения, как показано в обзоре API увеличения. Однако я ленив и хотел бы использовать окно, кажется, что API уже создается.
public MainWindow()
{
InitializeComponent();
if (!NativeMethods.MagInitialize())
{
NativeMethods.MagInitialize();
}
Negative = new float[] {
-1.0f, 0.0f, 0.0f, 0.0f, 0.0f ,
0.0f, -1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, -1.0f, 0.0f, 0.0f ,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f ,
1.0f, 1.0f, 1.0f, 0.0f, 1.0f};
NotNegative = new float[] {
0.0f, 0.0f, 0.3f, 0.0f, 0.0f ,
0.0f, 0.0f, 0.6f, 0.0f, 0.0f,
0.0f, 0.0f, 0.1f, 0.0f, 0.0f ,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f ,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
//NativeMethods.MagSetFullscreenColorEffect(Negative);
hwndMag = NativeMethods.GetForegroundWindow();
NativeMethods.MagSetColorEffect(hwndMag, NotNegative);
NativeMethods.ShowWindow(hwndMag, 3);
}