自定義 做乙個窗體 實現 滑鼠拖動
view code
privateconst
int wm_syscommand = 0x112
;private
system.windows.interop.hwndsource _hwndsource;
public
static intptr wndproc(intptr hwnd, int msg, intptr wparam, intptr lparam, ref
bool
handled)
return (system.intptr)0;}
private
static
void
wmgetminmaxinfo(system.intptr hwnd, system.intptr lparam)
marshal.structuretoptr(mmi, lparam,
true);}
//////
pointapi:point 這是告訴編譯器這個結構使用順序布局,在記憶體裡先後排序
///定義點的x、y軸點,作為minmaxinfo的屬性型別
///[structlayout(layoutkind.sequential)]
public
struct
point
}///
///最大化的預設位置和尺寸,以及預設的最小和最大跟蹤尺寸的乙個minmaxinfo結構的指標
///[structlayout(layoutkind.sequential)]
public
struct
minmaxinfo
;[structlayout(layoutkind.sequential, pack = 0
)]public
struct
rect
//abs needed for bidi os
}///
win32視窗高度
public
intheight
}///
win32視窗
public rect(int left, int top, int right, int
bottom)
///win32視窗
public
rect(rect rcsrc)
}///
///包含顯示器資訊的型別
///[structlayout(layoutkind.sequential, charset =charset.auto)]
public
class
monitorinfo
//////
getmonitorinfo函式返回乙個顯示器的資訊
//////
顯示器的控制代碼
///顯示器資訊(輸出引數)
///[dllimport("
user32")]
internal
static
extern
bool
getmonitorinfo(intptr hmonitor, monitorinfo lpmi);
//////
獲取到螢幕上具有最大交集區域的邊界矩形的乙個指定的視窗控制代碼。(能處理多顯示器的問題)
//////
視窗控制代碼
///可能為null、最接近的視窗、主顯示屏
///[dllimport("
user32")]
internal
static
extern intptr monitorfromwindow(intptr handle, int
flags);
這樣,只要在你要處理的視窗呼叫wndproc函式就可以了
this.sourceinitialized += delegate(object
sender, eventargs e)
;另外,如果只是在主顯示器最大化處理有一句更簡潔的**實現:
this.maximumsize = new size(screen.primaryscreen.workingarea.width, screen.primaryscreen.workingarea.height);
Qt 中 實現窗體拖動
實現窗體拖動 如果我們不使用作業系統自帶的標題欄,首先就應該將windows標題欄去掉,這個功能只要一條語句就能夠實現,那就是在建構函式中加入 setwindowsflags qt framelesshint 但是窗體就固定不動了,既不能拖動也不能拉伸,下面我就介紹一種方法來實現窗體的拖動。1.在類...
窗體拖動事件
窗體的拖動事件 標題框不顯示 將窗體的邊框和外觀屬性 formborderstyle設為none 拖動方法如下 為窗體新增乙個私有域 private system.drawing.point mousepoint 為窗體新增滑鼠按下事件 注意對滑鼠按鍵進行篩選 private void mainfo...
C 實現全窗體範圍拖動
using system.runtime.interopservices dllimport user32.dll public static extern bool releasecapture dllimport user32.dll public static extern bool send...