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有用吗?
[解决办法]
你没窗口,那只能用线程了。
给个例子:
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的映射了吧,想办法弄个函数指针,然后想办法回调
[解决办法]
你要截取消息?认为设计不是很合理!
ON_MESSAGE(WM_COPYDATA,OnPinPad) //处理
你自己定义个消息,与你的某个行为相关联起来试试,不可能收不到消息的
[解决办法]
MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP1~7\*.*