小编hhe*_*bol的帖子

SetWindowLongPtr() 如何传递消息?

我一直在尝试学习如何使用SetWindowLongPtr()和理解它,如下所示:

  1. 您可以使用以下函数来获取当前消息并将其发送到自定义协议: LONG_PTR Some_Ptr = SetWindowLongPtr(Some_Hwnd, GWLP_WNDPROC, (LONG_PTR)Custom_Proc);

  2. 创建自定义协议,示例如下:

    static LRESULT CALLBACK Custom_Proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        switch (msg)
        {
            case WM_COMMAND:
                MessageBox(hwnd,"This is a window","OKAY",NULL);
                break;
            default:
                return CallWindowProc((WNDPROC)Some_Ptr, hwnd, msg, wParam, lParam);
                break;  
        }
        return CallWindowProc((WNDPROC)Some_Ptr, hwnd, msg, wParam, lParam);
    }
    
    Run Code Online (Sandbox Code Playgroud)

我的问题如下:

  1. 我在这里错过了什么吗?它是否正确?
  2. 你打哪里电话SetWindowLongPtr()Some_Hwnd如果您需要特定情况,请想象在 WM_CREATE 中创建的按钮句柄。但我宁愿它对其他情况开放。

c windows winapi message

1
推荐指数
1
解决办法
2012
查看次数

标签 统计

c ×1

message ×1

winapi ×1

windows ×1