使用WPARAM或LPARAM 传递指针

    xiaoxiao2021-12-14  21

    在VC  中的定义

    typedef UINT_PTR WPARAM; typedef LONG_PTR LPARAM; typedef _W64 unsigned int UINT_PTR, *PUINT_PTR; typedef _W64 long LONG_PTR, *PLONG_PTR;

    可见WPARAM 是无符32位 , LPARAM 是长整型

    当使用sendmessage 传递消息时,WPARAM和LPARAM  都是可以传递指针的

    假设要传递的是HDC hdc 句柄,到一个对话框hwdialog

    首先要把hdc 转化为void* , 然后再转化为WPARAM或LPARAM ,

    在消息处理函数中,对接收到的消息WPARAM或LPARAM ,先转化为void*,然后再转化为HDC ,

    // 发送消息 HDC hdc; HWND hw = CreateDialog(hInst , MAKEINTRESOURCE(IDD_Show),hWnd,ShowPicture); SendMessage(hw,WM_PR,11,(LPARAM)((void*)hdc)); // 使用LPARAM 或 WPARAM // 在对话框处理函数中接受消息 HDC hdm = (HDC)(void*)(lParam);

    转载请注明原文地址: https://ju.6miu.com/read-963081.html

    最新回复(0)