нажмите winForm, в то время как непрозрачность низкая [дубликат]

Можете ли вы использовать C ++? Если это так,

https://github.com/ebshimizu/socket.io-clientpp

7
задан Reza Aghaei 12 September 2017 в 03:38
поделиться

1 ответ

Вы можете сделать окно, щелкнув, добавив стили WS_EX_LAYERED и WS_EX_TRANSPARENT в свои расширенные стили. Чтобы сделать его всегда сверху, установите его TopMost на true и сделайте его полупрозрачным, используйте подходящее значение Opacity:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Opacity = 0.5;
        this.TopMost = true;
    }
    [DllImport("user32.dll", SetLastError = true)]
    static extern int GetWindowLong(IntPtr hWnd, int nIndex);
    [DllImport("user32.dll")]
    static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
    const int GWL_EXSTYLE = -20;
    const int WS_EX_LAYERED = 0x80000;
    const int WS_EX_TRANSPARENT = 0x20;
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        var style = GetWindowLong(this.Handle, GWL_EXSTYLE);
        SetWindowLong(this.Handle,GWL_EXSTYLE , style | WS_EX_LAYERED | WS_EX_TRANSPARENT);
    }
}

Результат выборки

15
ответ дан Reza Aghaei 15 August 2018 в 14:43
поделиться
  • 1
    @ rory.ap, похоже, работает. Спасибо, Реза! – Sam Weaver 4 October 2016 в 15:28
  • 2
    @SamWeaver - Просто доказывает, что вы всегда можете узнать новые вещи :) – rory.ap 4 October 2016 в 15:34
  • 3
    Вы можете просто переопределить CreateParams и установить ExStyle вместо P / Invoke. – TnTinMn 5 October 2016 в 01:42
  • 4
    Я бы очень хотел проголосовать за это 100 раз, серьезно !!! :) – Marco 11 September 2017 в 15:23
  • 5
    @Marco Спасибо, человек! Это очень любезно с вашей стороны :) – Reza Aghaei 12 September 2017 в 03:35
Другие вопросы по тегам:

Похожие вопросы: