好吧,严重的困境。我正在尝试包装 Windows API。我遇到的最大的设计问题(目前)是什么类适合包装什么?由于我之前已经创建了大约 3 次 Windows API 包装器,总是在中间遇到设计问题,这一次,我打算谨慎行事,在实现之前询问这里令人困惑的部分。
WNDCLASS
和 CreateWindow
创建的主窗口应该包装在一个单个类中还是单独的类中?我应该创建一个单例来保存 WNDCLASS
吗?
另外,如果有人能给我流程图或总体思路,关于如何将 Windows API 抽象为类,一些好的设计技巧?
最佳答案
要获得良好的灵感来源,请查看 .Net 框架 - 没有 WNDCLASS 的概念!您可以让您的库创建一个由所有窗口共享的 WNDCLASS。您不需要单例 (uurrgghhh),因为该类可以由字符串使用。如果您想更改 WNDCLASS 为特定窗口定义的某些特性,我认为您可以使用 SetWindowLongPtr 函数。
需要考虑的事项:
- 是否需要多个 WNDCLASS 实例?
- 您希望客户端访问 WNDCLASS 数据吗?
- windows 和 WNDCLASS 之间是一对一的关系还是一对多的关系?
关于c++ - WNDCLASS 和窗口句柄在单独的还是同一个类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616955/