利用自定义消息处理函数的WPARAM或LPARAM参数传递指针
有自定义消息:
#define WM_TEST WM_USER+121
消息处理函数:
afx_msg void OnTest(WPARAM wParam,LPARAM lParam); 该消息是一个主线程向辅助线程发送数据的消息。
主线程中发送消息的代码:
m_param.pDoc=pDoc;
m_param.pSpecAnlyz=m_pSpecAnlyz;
// CWinThread* pThread=AfxBeginThread(ThreadTest,static_cast<LPVOID>(&m_param));
m_pTestThread=(CTestThread*)AfxBeginThread(RUNTIME_CLASS(CTestThread));
Sleep(200);
// 必须先把&m_param转化为void*指针,然后才可以进一步强制转化为WPARAM
m_pTestThread->PostThreadMessageW(WM_TEST,(WPARAM)((void*)&m_param),1);// 发送测试消息 m_param为自定义类型,其成员为指针变量,因此 m_param无法强制转化为WPARAM。但是m_param的地址指针和WPARAM一样,都是4个字节,因此可以将m_param的地址指针起那个只转换为WPARAM。在VC.NET2005中,直接转换编译报错。考虑到void * 之后,先将&m_param转化为void*指针,然后才可以进一步强制转化为WPARAM。
同样的,在OnTest中,必须先将wParam强制转换为void * ,然后进一步转换为其他类型。
PS:网上有高手指出,局部指针变量最好不要作为wParam或 lParam传递,因为当消息响应时改变量可能已经不在了。
利用自定义消息处理函数的WPARAM或LPARAM参数传递指针的更多相关文章
- EntityFramework Core 2.0自定义标量函数两种方式
前言 上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式.本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数. 自定义标量函数两种方式 在EF Core 2.0中我们可以将 ...
- wxwidget自定义消息处理步骤
from http://www.cppblog.com/kenlistian/archive/2009/02/06/73096.html 略有修改 wxwidget自定义消息处理步骤 自定义消息处理( ...
- SendMessage()、WPARAM、LPARAM函数使用例子(转)
http://chujiaba.blog.163.com/blog/static/18991813720106209350592/ 2010-07-20 21:35:00| 分类: C | 标 ...
- 利用Qt中的ui文件生成PyQt5程序,自定义槽函数
1.在Qt Creator4.8.0上面设计如上.ui文件 2.点击上方图标,可以建立信号-槽连接,button_click()为自定义槽函数 3.设计目的:点击clear按钮,可消除上方文本框中的内 ...
- SendMessage和PostMessage区别以及WPARAM 和 LPARAM区别
WPARAM 和 LPARAM wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:一个是WORD类型的16位整型变量:另一个是LONG类型 ...
- wParam与lParam的区别
wParam与lParam的区别 lParam 和 wParam 是宏定义,一般在消息函数中带这两个类型的参数,通常用来存储窗口消息的参数. LRESULT CALLBACK WindowProc(H ...
- 走进windows编程的世界-----消息处理函数(1)
Win32消息机制 过程驱动:程序是依照我们预先定义好的顺序运行.每运行一步,下一步都已经依照预定的顺序 继续运行,直至程序结束. 事件驱动:程序的运行顺序是无序的.某个时间点所运行的 ...
- LRESULT与wParam和lParam的问题
在微软vc提供的头文件中有定义在winnt.h中typedef long LONG;在windef.h中typedef LONG LRESULT; 所以LRESULT就是long,也就是长整形之所以取 ...
- 浅谈MFC类CrackMe中消息处理函数查找方法
最近一个学姐发给我了一份CrackMe希望我解一下,其中涉及到了MFC的消息函数查找的问题,就顺便以此为例谈一下自己使用的消息函数查找的方法.本人萌新,如果有任何错漏与解释不清的地方,欢迎各路大佬指正 ...
随机推荐
- c++ zlib(qt)压缩与解压缩
#include <QtCore/QCoreApplication> #include "zlib.h" #include "stdio.h" #i ...
- POJ1226(strstr)
Substrings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13348 Accepted: 4722 Descr ...
- springboot开启远程调试
远程调试maven设置 The run goal forks a process for the boot application. It is possible to specify jvm arg ...
- ORM学习 一 : JPA JDBC
JDBC jdbc是一组规范,是接口,由不同的数据库厂商各自提供相应的实现类,打包成jar包,也就是所谓的数据库驱动.而我们的java应用程序,只需要调用jdbc的接口就可以了. 什么是JPA Jav ...
- pdf2swf 转换时报This file is too complex to render- SWF only supports 65536 shapes at once
ERROR ID Table overflow ERROR This file is too complex to render- SWF only supports 65536 shapes ...
- 【219】◀▶ IDL 数学函数说明
参考:Math - Miscellaneous Routines参考:Math - Statistical Tools Routines 01 ABS 绝对值. 02 SQRT 平方根. 03 ...
- ZOJ3175【公式化函数的思想】
题意: 给出f(n,m)(m<n)的定义:大于m并且小于n的能整除m的数的个数. F(n)为m从1至n的f(n,m)的和. 给出n,求F(n). 思路: 就是计算n/1 + n/2 + n/ ...
- laravel C层 (控制器)
<?php namespace App\Http\Controllers; use App\Index; use App\Http\Controllers\Controller; class I ...
- 如何将含有byte数据项的结构存入MongoDb
我们知道MongoDb不支持byte(BsonType中根本没有定义byte), 但是在实际生产环境中数据结构(特别是远古时代的数据结构)往往包含byte数据项. 这时候无法保存原有的数据结构,一般会 ...
- poj3276 Face The Right Way
Face The Right Way POJ - 3276 题目大意: n头牛排成一列,每头牛向前或向后,为了让所有牛都面向前方,设定一个k值,每操作一次恰好使k头连续的牛转向,求最少的操作次数m和对 ...