用C 做乙個懸浮視窗

2021-04-21 23:45:09 字數 1881 閱讀 1349

用c#做乙個懸浮視窗[含三種移動無標題窗體的辦法]

2023年08月24日 星期四 16:36

今天看幾個c#原始碼,再到愚翁專欄

第一步:建立乙個窗體,設定其屬性:

this.formborderstyle = system.windows.forms.formborderstyle.none;

this.maximizebox = false;

this.minimizebox = false;

this.opacity = 0.5;

第二步:設定窗體的onload事件:

private void form2_load(object sender, eventargs e)

第三步:修改窗體的paint事件,美化介面,這裡做乙個漸變背景,需要引入system.drawing.drawing2d;

private void form2_paint(object sender, painteventargs e)

第四步:需要實現滑鼠拖動懸浮窗體,

const int wm_nchittest = 0x0084;

const int htclient = 0x0001;

const int htcaption = 0x0002;

protected override void wndproc(ref system.windows.forms.message m)

}關於這一步,愚翁 不是這樣處理的,他是處理滑鼠事件來實現的,效果差不多,也貼在這裡學習一下吧:

先定義幾個類成員變數:

private point ptmousecurrrnetpos, ptmousenewpos,ptformpos, ptformnewpos;

private bool blnmousedown = false;

再新增三個滑鼠事件:

private void form2_mousedown(object sender, mouseeventargs e)

private void form2_mousemove(object sender, mouseeventargs e)

}private void form2_mouseup(object sender, mouseeventargs e)

第三種移動無標標題窗體的辦法:

通過api來處理,需要引入system.runtime.interopservices;

[dllimport("user32.dll")]

public static extern bool releasecapture();

[dllimport("user32.dll")]

public static extern bool sendmessage(intptr hwnd,int wmsg,int wparam,int lparam);

public const int wm_syscommand=0x0112;

public const int sc_move=0xf010;

public const int htcaption=0x0002;

private void form2_mousedown(object sender, system.windows.forms.mouseeventargs e)

呵,這個看起來好像比較「正統」。

如何用C 做乙個懸浮視窗程式

如何用c 做乙個懸浮視窗程式 用c 做乙個像 flashget 的懸浮視窗,其實很簡單,不像以前需要呼叫很多系統 api。大致的步驟如下。首先是主窗體部分,即要判斷窗體的狀態來決定是否顯示懸浮視窗。區域性成員宣告 private formwindowstate fwsprevious private...

如何用C 做乙個懸浮視窗程式

用 c 做乙個像 flashget 的懸浮視窗,其實很簡單,不像以前需要呼叫很多系統 api。大致的步驟如下。首先是主窗體部分,即要判斷窗體的狀態來決定是否顯示懸浮視窗。區域性成員宣告 private formwindowstate fwsprevious private frmtopmost my...

愚翁專欄 如何用C 做乙個懸浮視窗程式

用 c 做乙個像 flashget 的懸浮視窗,其實很簡單,不像以前需要呼叫很多系統 api。大致的步驟如下。首先是主窗體部分,即要判斷窗體的狀態來決定是否顯示懸浮視窗。區域性成員宣告 private formwindowstate fwsprevious private frmtopmost my...