是不是使用了多线程?
SendMessage()做了什么工作?

解决方案 »

  1.   

    不可能,我用SendMessage();,一点问题都没有。
    一定是SendMessage()去执行的程序有误,仔细看看。
      

  2.   

    一定是Send的Message消息响应函数里出的错,而不是SendMessage本身...
      

  3.   

    SendMessage(WM_YOUR_MSG...)
    把 WM_YOUR_MSG 的响应函数贴出来。
      

  4.   

    没有,我在SendMessage()里屏蔽了所有语句(一共才6行),不过在debug版里没有错误
      

  5.   

    在System Tray里响应WM_RBUTTONUP, 然后发消息给主窗口。
    system tray处理类中;
    CWnd* pTarget = AfxGetMainWnd();
    if (LOWORD(lParam) == WM_RBUTTONUP)
    {
       ::SendMessage (pTarget->m_hWnd, 
                      WM_MODIFYMENU,
                      NULL,
                      NULL);
       ....
    }
    主程序里
    OnModifyMenu ()为空,结果:同样出错。
    我把程序反汇编了,找到那行,发现出错的语句是执行了一个无效的指针操作。 
      

  6.   

    自定义消息。
    stdafx.h
    #define     WM_MODIFYMENU    WM_USER + 101
      

  7.   

    难道是AfxGetMainWnd()==NULL吗, 不会吧?
      

  8.   

    把SendMessage前的两个冒号去掉呢?还会有问题吗?
      

  9.   

    To SuperChen:
    AfxGetMainWnd ()等于NULL?===>Trace发现不是To FoolBoy:
    我已经试过了。:(
      

  10.   

    attention: maybe the prototype definition of OnModifyMenu() function is wrong.
    Please show the declaration of the function.SUCH AS THE FOLLOWING: 
    afx_msg void OnModifyMenu(WPARAM wp, LPARAM lp);
      

  11.   

    Because I had meet the problem before. this kind of problem show itself only in Release edtion but not in Debug edtion.
      

  12.   

    我以前也遇到类似问题,是SendMessage()的参数写错了,你再仔细察看一下,或者就不要用自定义消息,直接重载windows消息.
      

  13.   

    用RegisterWindowMessage()来定义自己的消息,只要消息字符串一样,得到的id也一样
      

  14.   

    问题出在SendMessage()的第一个参数,可能得到了一个零时的句柄。
    不过我用AfxGetApp ()->m_pMainWnd->GetSafeHWnd ();也一样。虽然现在用别的方法避开了这个问题,还是感谢大家,再加30银。