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 上的矢量图形

Windows Mobile 平台上的 PInvoke

将 Windows-mobile 6.5 应用程序连接到 PC 上的 sqlite 数据库

当我在 jQuery Mobile 中单击弹出窗口上的链接时,如何防止在第一个输入项上自动对焦

Windows Mobile / Windows CE 上的服务器推送 / HTTP 流