c++ - WNDCLASS 和窗口句柄在单独的还是同一个类中?

标签 c++ windows oop winapi

好吧,严重的困境。我正在尝试包装 Windows API。我遇到的最大的设计问题(目前)是什么类适合包装什么?由于我之前已经创建了大约 3 次 Windows API 包装器,总是在中间遇到设计问题,这一次,我打算谨慎行事,在实现之前询问这里令人困惑的部分。

WNDCLASSCreateWindow 创建的主窗口应该包装在一个单个类中还是单独的类中?我应该创建一个单例来保存 WNDCLASS 吗?

另外,如果有人能给我流程图或总体思路,关于如何将 Windows API 抽象为类,一些好的设计技巧?

最佳答案

要获得良好的灵感来源,请查看 .Net 框架 - 没有 WNDCLASS 的概念!您可以让您的库创建一个由所有窗口共享的 WNDCLASS。您不需要单例 (uurrgghhh),因为该类可以由字符串使用。如果您想更改 WNDCLASS 为特定窗口定义的某些特性,我认为您可以使用 SetWindowLongPtr 函数。

需要考虑的事项:

  1. 是否需要多个 WNDCLASS 实例?
  2. 您希望客户端访问 WNDCLASS 数据吗?
  3. windows 和 WNDCLASS 之间是一对一的关系还是一对多的关系?

关于c++ - WNDCLASS 和窗口句柄在单独的还是同一个类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616955/

相关文章:

c++ - 如何修改 C++ 中的 const 引用

c++ - OpenACC - 嵌套循环奇怪的行为

linux - 使用新字符串在 linux/windows 控制台中输入命令

javascript - 在javascript中循环遍历json

java - Controller 中的原型(prototype)作用域 bean 返回相同的实例 - Spring Boot

c++ - c++14 std::experimental::filesystem::v1 和 c++17 std::filesystem 之间的区别?

c++ - 如果满足特定条件,则停止沿特定深度的 boost::depth_first_search

c++ - 确定与 COM RPC 服务器通信的客户端进程的进程 ID

windows - 批处理文件中的文件名需要加上 _YYYY_MM 后缀

PHP:如何使用另一个类中的参数实例化一个类