gpt4 book ai didi

c - Winapi 多个 Windows 相同的 WindowProc

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:59 26 4
gpt4 key购买 nike

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

谢谢

最佳答案

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

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

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

另一种按窗口存储数据的方法是通过 SetPropGetProp 函数使用窗口属性,这让您可以存储一个或多个指针大小的名称/值对。

关于c - Winapi 多个 Windows 相同的 WindowProc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com