Windows Mobile 上的自有窗口
Posted
技术标签:
【中文标题】Windows Mobile 上的自有窗口【英文标题】:Owned windows on Windows Mobile 【发布时间】:2010-09-26 15:47:35 【问题描述】:为 WM 6 开发,我调用 CreateWindow 并将 hWndParent 设置为我想成为所有者的窗口。我没有设置 WS_CHILD 样式,但是创建的窗口仍然成为子窗口。这样做的正确方法是什么?
CreateWindow 的 MSDN article 提到了 WinCE 1.0 的这种行为:
Windows CE 1.0 不支持拥有的窗口,对话框除外。如果 hwndParent 参数不为 NULL,则窗口被隐式赋予 WS_CHILD 样式。
或者,正如 Hans Passant 的评论所暗示的那样,当 MSDN WinCE 文档说 CreateWindow 确实创建了拥有的窗口并且 CreateDialog* 函数最终调用了 CreateWindow 时,是否所有的 MSDN WinCE 文档都是错误的?
【问题讨论】:
“不支持”的哪一部分你不清楚? 我原以为自 WinCE 1.0 以来我们已经取得了一些进展。文章还说:“要创建子窗口或拥有的窗口,请提供有效的窗口句柄”。 【参考方案1】:这样做的正确方法是为窗口赋予 WS_POPUP 样式,如 Microsoft 的 WinCE 3.0 的 Window Relationship Fundamentals 文档中所述:
当您创建具有 WS_POPUP 样式的窗口时,您可以在***窗口之间创建所有者/拥有的窗口关系。由于顶层窗口没有父窗口,调用 CreateWindow 函数时指定为父窗口的窗口成为新窗口的所有者窗口。
【讨论】:
【参考方案2】:如果您将 WS_OVERLAPPED 作为样式传递,它将为您打开 WS_CHILD。您在创作过程中传递了哪些风格?
您可能希望为样式传递 0。
【讨论】:
为样式传递 0 仍然会创建一个子窗口。以上是关于Windows Mobile 上的自有窗口的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows Mobile 6.1 Treo 800w 上的 Opera 9.5 Mobile 中使用 Canvas 标签
将 Windows-mobile 6.5 应用程序连接到 PC 上的 sqlite 数据库