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

基类自定义了消息,多个窗口都引用该类,发送消息而被其他窗口接收?该如何解决

2012-05-16 
基类自定义了消息,多个窗口都引用该类,发送消息而被其他窗口接收?定义一个消息#define WM_USER_EDIT_NEWWM

基类自定义了消息,多个窗口都引用该类,发送消息而被其他窗口接收?
定义一个消息
#define WM_USER_EDIT_NEW WM_USER + 1003  

class CListCtrlBase  
{
  CWnd* pWn = AfxGetMainWnd();
  if(pWn) pWn->PostMessage(WM_USER_EDIT_NEW, nItem, nSub); //向主窗体发送结尾消息
}

class CListCtrlEdit : public CEdit, public CListCtrlBase //继承上面类
{
}

CListCtrlEdit //扩展类被多个窗口引用

当A窗口 运行B.DoModal();//模态运行 A窗口,B窗口有引用CListCtrlEdit 类

A::PreTranslateMessage(MSG* pMsg) /////倒是A先拦截WM_USER_EDIT_NEW 消息,,,B窗口没有拦截到消息
{
  switch (pMsg->message)
  {  
  case WM_USER_EDIT_NEW:
|


问:像这种情况。多个窗口都引用相同类,不同窗口如何区分相同的消息,,我的这个消息设计有问题!!,能从参数
  中区别吗??、谢谢!!!

[解决办法]
消息都是向某个窗口或消息发的
即,目的地是很明确的
[解决办法]
如果想要唯一的消息号 可以使用RegisterWindowMessage来注册消息

[解决办法]
广播消息就是了,PostMessage(HWND_BROADCAST, WM_USER_EDIT_NEW, nItem, nSub)

可以使用RegisterWindowMessage注册系统唯一的消息,这样不相关的窗口收到这个消息也不会处理的
[解决办法]
你为什么不多定义几个消息?

热点排行