在PokectPC上创建非全屏的窗体
2008-01-11 14:53 cppguy 阅读(1525) 评论(9) 编辑 收藏 举报开发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);
}