在PokectPC上创建非全屏的窗体

  开发PPC界面的时候,在托管代码下,我们自己不能创建一个非全屏的可拖动的窗体,就像MessageBox那样的。当然你可以将窗体的设置为没有边框,然后再创建的时候动态指定它的大小和位置,似乎可以得到,但是没有了上面的标题栏,这样的窗体拖动关闭都要使用代码来实现,这样的窗体就没有什么用处了。

     显示窗体总是全屏的,这个不是由CF限制的,事实上是由PocketPC这个自身设备自己限制的。

     那怎样创建这样一个非全屏的窗体呢?其实这是很有用的,最大的好处是我们在操作这样一个非全屏窗体的时候,还可以看到下层窗体的行为。

      这里推荐一种比较简单的做法,如果你应用OpennetCF的SDF的话只需要下面代码就可以实现这个效果

public FormB()
{
    InitializeComponent();
    IntPtr hWnd = Win32Window.FindWindow(null, this.Text);
    int style = Win32Window.GetWindowLong(hWnd, Win32Window.GetWindowLongParam.GWL_STYLE);
    style |= (int)(
            Win32Window.WindowStyle.WS_BORDER
            | Win32Window.WindowStyle.WS_CAPTION
            & ~Win32Window.WindowStyle.WS_MINIMIZEBOX
            );
    Win32Window.SetWindowLong(hWnd, (int)Win32Window.GetWindowLongParam.GWL_STYLE, style);
    Win32Window.SetWindowPos(hWnd, Win32Window.SetWindowPosZOrder.HWND_TOP, 25, 25, this.Width, this.Height, Win32Window.SetWindowPosFlags.SWP_SHOWWINDOW);
}


如果您用的是opennetcf sdf 2.1的话,请用以下代码
IntPtr hWnd = Win32Window.FindWindow(null, this.Text);
int style = Win32Window.GetWindowLong(hWnd, GWL.STYLE);
style |= (int)(WS.BORDER & WS.CAPTION & WS.MINIMIZEBOX & WS.GROUP);

Win32Window.SetWindowLong(hWnd, GWL.STYLE, style);
Win32Window.SetWindowPos(hWnd, HWND.TOP, 25, 60, this.Width - 100, this.Height - 100, SWP.SHOWWINDOW);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值