gpt4 book ai didi

c++ - GetWindowLongPtr 返回失败检索用户数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:12 34 4
gpt4 key购买 nike

我之前创建了 win32 包装器,但我丢失了文件...所以我要重新创建它们。问题出在我的路由器(静态窗口处理器)上。
这是我的代码

CFramework *wnd = 0; 

// retrieve associated Window instance
wnd = reinterpret_cast<CFramework *>(::GetWindowLongPtr(hWnd, GWL_USERDATA));

// call the windows message handler
wnd->WndProc(hWnd, msg, wParam, lParam);

return true;

当我调用 GetWindowLongPtr 时,它不会检索用户数据。
更新:
我也厌倦了这段使用 SetWindowLongPtr 的代码

if ( msg == WM_CREATE ) 
{
SetWindowLongPtr( hWnd, GWLP_USERDATA, (LONG)((CREATESTRUCT *)lParam)->lpCreateParams );
}

Window *targetApp = (Window*)GetWindowLongPtr( hWnd, GWLP_USERDATA );

if ( targetApp )
{
return targetApp->WndProc( hWnd, msg, wParam, lParam );
}

return DefWindowProc( hWnd, msg, wParam, lParam );

我用了我的第二个密码^^^^
我把断点放在 SetWindow ...似乎它永远不会被调用!

最佳答案

您的窗口可能会在 WM_CREATE 之前收到一些消息。我刚才做了类似的事情,在 WM_CREATE 之前到达了大小调整和定位消息以及 WM_NCCREATE。因此,您不应期望在这些消息中看到值(value)。

您是为 32 位还是 64 位编译?如果是 64 位,则转换为 LONG 可能会影响您的指针。

而且,正如 Rup 在评论中所说,您必须真正确定没有其他人在使用 WM_USERDATA

关于c++ - GetWindowLongPtr 返回失败检索用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081904/

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