Пролистать прозрачность для оконных форм Visual C #? - PullRequest
14 голосов
/ 22 сентября 2008

Я создал панель и установил ее на весь экран, теперь я могу видеть окна под ней, но я хочу, чтобы она просматривалась, то есть они могли щелкнуть файл или увидеть подсказку другого объекта через прозрачность.

RE: Это может быть слишком очевидно, но вы пытались отправить панель назад, щелкнув правой кнопкой мыши и выбрав «Отправить назад»?

Я имею в виду настольный компьютер или Firefox, а не что-то в моем проекте.

1 Ответ

21 голосов
/ 22 сентября 2008

Создание прозрачной формы верхнего уровня очень просто. Просто сделайте так, чтобы он заполнил экран или требуемую область, и определите, чтобы он имел цвет TransparenyKey и BackColor одного и того же значения.

Получить игнорирование мыши достаточно просто, вам просто нужно переопределить WndProc и сообщить WM_HITTEST, что все позиции мыши должны рассматриваться как прозрачные. Таким образом, заставляя мышь взаимодействовать с тем, что происходит под окном. Как то так ...

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == (int)WM_NCHITTEST)
            m.Result = (IntPtr)HTTRANSPARENT;
        else
            base.WndProc(ref m);
    }
...