自由安排你的N個視窗

來源:互聯網
上載者:User

對於這些經常泡網、載東東、寫程式的人來說,通常要開N多個視窗,有些時候為了比較兩個視窗、觀察效果經常要在兩個視窗上來回切換,很是不便,特別是螢幕小的更是麻煩!下面這個程式是專門用來設定任意表單處於最頂端的,通過拖動十字游標到所要的視窗,就可以得到該視窗的控制代碼並自動設為最頂層,也可以通過右鍵來刪除不要的視窗:

下面就來分析代碼:

要設定視窗在Windows Z軸的位置可以調用WinAPI:SetWindowPos:

in VB6.0

DWORD_PRT SetWindowPos(HWND hWnd,HWND hInsertAfter,int x,int y,int cx,int cy,UINT nFlag)

 

in C#:

 

[DllImport("user32.dll",EntryPoint = "SetWindowPos",CharSet = CharSet.Auto)]
public static extern long SetWindowPos(IntPtr hwnd, int hInsertAfter, int x, int y, int cx, int cy, int nFlag);

[DllImport("user32.dll", EntryPoint = "SetWindowPos", CharSet = CharSet.Auto)]
public static extern long SetWindowPos(IntPtr hwnd, IntPtr hInsertAfter, int x, int y, int cx, int cy, int nFlag); 

下面表格是對參數的說明:

 

參數

說明

in
VB6.0

in
C#

 

HWND
hWnd

IntPtr
hwnd

要移動的視窗的控制代碼

HWND
hInsertAfter

HWND_BOTTOM(1)

IntPtr
hwnd

int

把視窗放在Z軸的最後,即所有視窗的後面

HWND_TOP(0)

IntPtr
hwnd

int

將視窗放在Z軸的頂部,即所有視窗的前面

HWND_TOPMOST(-1)

IntPtr
hwnd

int

使視窗成為“TopMost”類型的視窗,這種類型的視窗總是在其它視窗的前面,直到它被關閉

HWND_NOTOPMOST(-2)

IntPtr
hwnd

int

將視窗放在所有“TopMost”類型
視窗的後面、其它類型視窗的前面

int
x

int
x

以客戶座標指定視窗新位置的左邊界

int
y

int
y

以客戶座標指定視窗新位置的頂邊界

int
cx

int
cx

以像素指定視窗的新的寬度

int
cy

int
cy

以像素指定視窗的新的高度

UINT
nFlag

SWP_ASNCWINDOWPOS

int

如果調用進程不擁有視窗,系統會向擁有視窗的線程發出需求。這就防止調用線程在其他線程處理需求的時候發生死結

SWP_DEFERERASE

int

防止產生WM_SYNCPAINT訊息

 

好多啊,有興趣的可以查一查《Windows API大全》或者:MSDN

 要獲得第一個參數(控制代碼,C#裡為IntPtr類型)可以使用WindowFromPoint(POINT Point)方法,該方法在C#的定義為:

 

[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(POINT Point);

 

這裡有一個POINT結構體的參數,用來傳遞滑鼠座標:

[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
    public int X;
    public int Y;

public POINT(int x, int y)
{
    this.X = x;
    this.Y = y;
}

public static implicit operator System.Drawing.Point(POINT p)
{
    return new System.Drawing.Point(p.X, p.Y);
}

public static implicit operator POINT(System.Drawing.Point p)
{
    return new POINT(p.X, p.Y);
}

這樣,我們就可以擷取任意座標、任意object的控制代碼了,有了該控制代碼剩下的就是查一下Windows API看看使用該控制代碼能完成哪些任務了。

最近在想有沒有這樣的一個程式在你關機前能夠有選擇地儲存一些應用程式的狀態,等到下次開機的時候又把這些程式還原到上次的狀態,就像Firefox裡的標籤儲存功能。或許使用Windows
API也可以完成這些任務,有時間的話再找找看。

最後,把壓縮包連結上來,對該程式有意見的不要忘記ps我哦~~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.