自由安排你的N个窗口

对于这些经常泡网、载东东、写程序的人来说,通常要开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我哦~~


转载于:https://www.cnblogs.com/Doho/archive/2006/12/31/609157.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值