1

我正在使用 WINAPI 开发 GUI,我有一个问题。我用相应的程序制作了一个自定义进度条来处理它的消息。我自己绘制进度条。对于进度条百分比,我使用使用自定义消息更新的静态变量,然后使用 InvalidateRect 重新绘制进度条。现在我该如何优化我的代码,以便我可以创建我的 ProgressBar 类的多个窗口。问题是我不能对所有这些都使用相同的静态百分比变量!所以每个实例都应该有它自己的百分比变量。

谢谢

4

2 回答 2

3

所有窗口都至少有一个指针大小的用户数据变量,您可以将其用于任何您喜欢的目的——通过GetWindowLongPtr/SetWindowLongPtr使用 index访问它GWLP_USERDATA

此外,当您注册一个窗口类时,您可以使用WNDCLASS成员指定要为类中的每个窗口分配的附加用户数据cbWndExtra。例如,如果在注册类时将其设置为 sizeof(DWORD_PTR),则还可以使用SetWindowLongPtr索引 0 存储 DWORD_PTR 大小的值。

根据每个窗口要存储多少数据,您可以使用上述方法直接存储它,或者分配自己的结构并存储指向它的指针(记住在窗口被销毁时释放数据)。

每个窗口存储数据的另一种方法是通过SetPropandGetProp函数使用窗口属性,它允许您存储一个或多个指针大小的名称/值对。

于 2013-01-04T12:43:23.230 回答
0

不要将百分比变量设为静态。使其成为课程的一部分并从 getter/setter 读取/写入

于 2013-01-04T10:01:11.167 回答