解决方案 »

  1.   

    1. 使用SendMessage会出现ASSERT(::ISWINDOW(m_hWNd))断言
      使用API ::SendMessage
    2. PreTranslateMessage的处理,却拦截不到这个消息
        SendMessage并不经过消息队列, 它是直接处理消息, 用PostMessage 则可以
        或者SendMessage 在 WindowProc 处理
      

  2.   

    to zzz3265
    我用SendMessage传递了一个本地变量指针,准备在MainFrame中处理,如果用PostMessage是否不妥?
      

  3.   

    sendmessage不经过消息队列,pretransmessage接受不到
      

  4.   

    SendMessage 会等待消息处理的返回, 本地变量指针没问题, 
    PostMessage 不行, 它直接返回了
      

  5.   

    使用::SendMessage
    我在自定义类的回调函数中使用:
    ::SendMessage(p->m_pFrameWnd->m_hWnd, WM_CALLINFO, 11, (DWORD)&callparam[0] );
    p->m_pFrameWnd->SendMessage(WM_CALLINFO, 11, (DWORD)&callparam[0]);  // p 是 this
    这两种方式都能进入框架的自定义消息映射函数,但是无法进入PreTranslateMessage
      

  6.   

    shakaqrj 说的有道理,的确是SendMessage不经过消息队列,使用PostMessage可以收到,可是本地变量指针...
      

  7.   

    前面说的很清楚了本地变量指针用SendMessage   在   WindowProc   处理
      

  8.   

    嗯,已经用了WindowProc,测试成功了,哈哈,感谢
      

  9.   

    其实原本设计不是CWnd,而是一个自定义基类,后来为了与主框架交互,想用消息映射过去,因此改成了CWnd类,没有窗口,goodboyws有什么好的建议么
      

  10.   

    to goodboyws:
    非窗口类如何与框架通讯
      

  11.   

    用sendMessage 或postMessage 函数