用這個函數(shù)沒錯。
創(chuàng)新互聯(lián)主營百色網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app軟件開發(fā),百色h5成都微信小程序搭建,百色網(wǎng)站營銷推廣歡迎百色等地區(qū)企業(yè)咨詢
你的hwnd沒有寫清楚,這樣hwnd是沒定義的,要指定具體窗體的hwnd,如form1.hwnd
rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
SetWindowLong hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hwnd, H80C0FF, 0, LWA_COLORKEY
中的hwnd參數(shù),全部改成 me.hwnd ,即當前窗口的hwnd
做一個窗體模板,假設是Form2
Dim x as New Form2
x.Show()
如果彈出窗口較多,x可以用動態(tài)數(shù)組替代
繪制和數(shù)據(jù)分離,就是說,Paint 事件永遠是用來繪制的,具體繪制什么東西(也就是繪制的數(shù)據(jù),如半徑為4的圓),有數(shù)據(jù)決定,MouseClick 可以更改一些參數(shù),然后由Paint 繪制:
MouseClick 事件里,重繪窗體,即:
int r = 0, x = 0, y = 0;
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
r = 10;
x = e.X;
y = e.Y;
this.Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
// 繪制一個r半徑圓
e.Graphics.DrawEllipse(new Pen(Color.Red), x, y, r, r);
}
補充:
在 MouseClick 事件中去調(diào)用Form 的 Paint 事件,那么參數(shù)要如何傳遞?
參數(shù)是個全局變量,類似上面的r、x、y等,不是由e傳過去的,
上述代碼是c#的,vb.net和c#一樣,都是用的fcl類庫,你改一下就可以了,
在VB.NET中,通過
窗體對象.ShowDialog()
啟動窗體為“非模式“狀態(tài)
設置Region屬性:
Dim path As New System.Drawing.Drawing2D.GraphicsPath
path.AddEllipse(0, 0, 400, 300)
Region = New Region(path)
兩個顯示器顯示有兩種模式,一種是
雙屏
復制,另一種是擴展。
你這個只能用第二種方式。你需要把要在另一個顯示器上顯示的窗體的Location設置在主顯示器全屏時的右邊就可以了.其實就是桌面的向右延伸。
在主顯示上拖一下窗體就明白了!