用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...