利用自定义消息处理函数的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传递,因为当消息响应时改变量可能已经不在了。
最新文章
- 详解Eclipse断点
- effective java 读后感
- warning 4510 with const member in struct
- Markdown 简明语法手册
- Codeigniter 3.0 相关文档 part one
- RMAN_学习笔记4_RMAN Virtual Catalog虚拟恢复目录
- 周赛-DZY Loves Chessboard 分类: 比赛 搜索 2015-08-08 15:48 4人阅读 评论(0) 收藏
- 如何计算一个字符串表示的计算式的值?——C_递归算法实现
- C#_枚举类型
- 宿舍局域网与Internet连接
- ContentProvider的一些总结
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(5)-前台JqueryEasyUI前台实现
- 201521123114 《Java程序设计》第10周学习总结
- struts2(五)之struts2拦截器与自定义拦截器
- Mac_Homebrew
- Nginx+tomcat配置集群负载均衡
- HDU-4725.TheShortestPathinNyaGraph(最短路 + 建图)
- Ubuntu18---安装Redis和简单使用Redis
- was监控脚本编写时的注意点
- over(partition by)开窗函数的使用