首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MFC消息映射有关问题

2013-03-27 
MFC消息映射问题新建了一个A类,继承CDialog,.h文件后面加DECLARE_MESSAGE_MAP(),.cpp文件增加BEGIN_MESSAG

MFC消息映射问题
新建了一个A类,继承CDialog,.h文件后面加DECLARE_MESSAGE_MAP(),.cpp文件增加BEGIN_MESSAGE_MAP(Mess, CDialog)
ON_MESSAGE(WM_COPYDATA,OnPinPad)   //处理
END_MESSAGE_MAP()

为什么没有得到消息.我把这个ON_MESSAGE(WM_COPYDATA,OnPinPad)加到新建的MFC工程里去,就能得消息,自己新添加的类,加进去之后,得不到消息. mfc
[解决办法]
直接做个dialog,然后关联类
只有窗口和线程才能处理消息
[解决办法]
去google查下,花一天时间看看,不会线程,以后什么事情都做不了
[解决办法]
ON_MESSAGE是用户自定义消息

首先确定你的类A时继承CDialog
ON_WM_COPYDATA()系统消息这么写
[解决办法]

引用:
引用:ON_MESSAGE是用户自定义消息

首先确定你的类A时继承CDialog
ON_WM_COPYDATA()系统消息这么写

继承没错的,
ON_WM_COPYDATA这是我算定义的,收到消息之后,调用OnPinPad这个方法.

但是这个是系统消息,用ON_MESSAGE有用吗?
[解决办法]
引用:
引用:引用:
引用:ON_MESSAGE是用户自定义消息

首先确定你的类A时继承CDialog
ON_WM_COPYDATA()系统消息这么写

继承没错的,
ON_WM_COPYDATA这是我算定义的,收到消息之后,调用O……

你没窗口,那只能用线程了。
给个例子:
UINT WINAPI Func(LPVOID p)
{
MSG msg;
while(1){ GetMessage(&msg,NULL,0,0); ... }
return 0;
}
向线程发消息要用PostThreadMessage(thread_id, ...) 这个thread_id就是调用_beginthreadex时最后一个参数
[解决办法]
消息隐射,就是一个回调函数的是同。把回调关联到某个消息上。

当然,你需要注册这个消息,然你的程序把这个消息转发到你想要的控件上。
所以需要和控件(窗口)关联一下。
[解决办法]
在另外个工程里面,新建一个与你这个demon一样的窗口,把需要的映射函数都关联到对应的控件上。

然后把函数实现,copy过去。虽然不支持这个做法,但是对于业务和界面没有分离的项目,只能这么做了。
[解决办法]
也没有句柄传参?自己定义个全局的不就行了
[解决办法]
还是别用MFC的映射了吧,想办法弄个函数指针,然后想办法回调
[解决办法]
引用:
引用:
还是别用MFC的映射了吧,想办法弄个函数指针,然后想办法回调

这个有点难度,功能里面用HOOK实现的,我再想想.

你要截取消息?认为设计不是很合理!


ON_MESSAGE(WM_COPYDATA,OnPinPad)   //处理
你自己定义个消息,与你的某个行为相关联起来试试,不可能收不到消息的
[解决办法]
MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP1~7\*.*

热点排行