C# Ручка полноэкранного режима API увеличения - PullRequest
1 голос
/ 02 августа 2020

Когда инициализируется 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);
    }
...