如何创建一个WIN32窗口?

Posted

技术标签:

【中文标题】如何创建一个WIN32窗口?【英文标题】:how to create a Window WIN32? 【发布时间】:2014-02-03 07:57:08 【问题描述】:

我只是想知道 Windows 是如何创建这个窗口的?

我的意思是应用到那个窗口的样式,我只想在我的项目中使用这些样式。

作为信息,我使用 MS Visual C++ 2008。

谢谢

【问题讨论】:

它只是一个简单的对话框,与任何对话框框架的样式相同。 @HansPassant:谢谢回复,是用CreateDialog()还是CreateWindow()创建的?我怎样才能创建一个单独的区域,我的意思是白色的凭据输入和灰色的按钮?谢谢 所有这些都是窗口。您不创建单独的区域,而是添加具有 cetain 样式或“系统类”的窗口(阅读 CreateWindow 的文档)。文本框是一个窗口,按钮是窗口。它们都是使用 hWndParent 创建的,这是您从创建第一个窗口时获得的句柄(看起来像 WS_OVERLAPPEDWINDOW 样式)。 也可以通过加载资源来做到这一点(当然,你必须首先生成它——可能是使用资源编辑器)。但是对于这 4 个控件,它几乎不值得麻烦。 @Damon:所以它只是窗口上方的窗口?如果我更正,我猜白色区域是充当容器的子控件? (可能是静态控制?)那蓝色区域呢?它是一个所有者绘制按钮吗?我的意思是,它可以点击吗?谢谢 【参考方案1】:

没有简单的方法!没有用于使用“Windows 8 风格”或任何其他版本的风格的公共 API。您只需手动复制它,将其逐个像素与屏幕截图进行比较。然后使用下一版本的 Windows 更新您的应用程序!

因为他们在每次发布时都会更改此类对话框的指标,所以他们无法为“系统主题对话框”生成公共库,因为 Microsoft 将无法更改设计,因为担心会破坏某人的应用程序例如,可能使用了太多的文字。

【讨论】:

感谢您的回复,很抱歉不清楚,但我之前提到的“样式”是传递给CreateWindow() 的窗口样式或用于创建单独区域的其他类似内容:白色用于凭据输入和灰色的按钮。有任何想法吗?谢谢 -1 表示不知情的意见。感兴趣的朋友:Visual Styles. @IInspectable 实际上,我认为这不是 OP 想要的。我很清楚您可以获得样式化的按钮和控件,但我不知道有什么方法可以获得完整的对话框(字体和颜色与系统对话框匹配,水平规则的正确位置,灰色区域在底部,依此类推)。如果您知道一种创建具有原生外观的对话框(不仅仅是控件)的方法,请发布正确的答案。由于给出的原因(跨版本更改指标),我认为没有一个公共图书馆。 -1 表示不知情的评论。 对话框和布局 - 并且在过去 30 年中一直 - 通过对话框资源进行描述。大小在 DLU 中指定,因此您不必担心字体指标的变化。您可以使用CreateDialogIndirect 从资源中创建一个对话框。检索对话框模板资源与从二进制图像中检索任何其他资源没有什么不同。 @IInspectable 我们仍在谈论不同的目的。他正在描述(我认为)创建一个与当前 Windows 样式匹配的对话框。没有现成的对话资源——这就是重点。您建议从哪里获得淡蓝色背景颜色 - 在 Vista 和 Win 8 上是不同的!据我所知,样式必须硬编码到您的应用程序中。您能否给出一个返回正确颜色的 API 示例,或者使用与他示例中的“保存凭据”相同的样式绘制自定义标题?

以上是关于如何创建一个WIN32窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Win32 API 阻止来自透明窗口的鼠标输入?

使用 TCP 套接字 (WIN32 API) 创建的两个窗口之间的通信

VC++ win32 application里如何建一个子窗口

4.win32注册窗口类和创建窗口

如何在 Win32 窗口中实现 MFC 资源?

win32day03-窗口注册和创建