我被選中了一些代碼,實現一個最頂層的,透明的,並通過代碼點擊雖然形式:透明,點擊後,除了自定義標題欄形式
public enum GWL
{
ExStyle = -20
}
public enum WS_EX
{
Transparent = 0x20,
Layered = 0x80000
}
public enum LWA
{
ColorKey = 0x1,
Alpha = 0x2
}
[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
public static extern int GetWindowLong(IntPtr hWnd, GWL nIndex);
[DllImport("user32.dll", EntryPoint = "SetWindowLong")]
public static extern int SetWindowLong(IntPtr hWnd, GWL nIndex, int dwNewLong);
[DllImport("user32.dll", EntryPoint = "SetLayeredWindowAttributes")]
public static extern bool SetLayeredWindowAttributes(IntPtr hWnd, int crKey, byte alpha, LWA dwFlags);
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
int wl = GetWindowLong(this.Handle, GWL.ExStyle);
wl = wl | 0x80000 | 0x20;
SetWindowLong(this.Handle, GWL.ExStyle, wl);
SetLayeredWindowAttributes(this.Handle, 0, 128, LWA.Alpha);
}
有了這個代碼,所有的形式都是透明的,然後點擊 - 儘管絕對(文本,圖像,控制按鈕...)
當前窗體邊框樣式爲無(無邊框,無標題欄)。現在我想製作一個自定義標題欄,允許用戶將窗體移動到屏幕上的其他位置(如標題欄)。
這裏的問題,所有的表單都無法點擊它(原因是點擊代碼),如何做點擊表單但除了自定義標題欄?
自定義標題欄必須作爲其他元素透明。 我不想保留原來的標題欄,它對我的應用程序看起來很糟糕。
如果窗體透明如何將用戶知道在哪裏的標題欄是? – TaW 2014-10-27 17:32:28
表單是透明的,但用戶仍然看到文本和標題欄的形式:) – user3379240 2014-10-28 09:26:39