在PokectPC上创建非全屏的窗体

来源:互联网 发布:宁静数据分析表格 编辑:程序博客网 时间:2024/06/17 05:52

  开发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);

原创粉丝点击