在MFC ActiveX Control工程中,我想在控件类以外的类或者任意模块中触发我定义的事件,请问如何办到??????一经解决马上给分!分不够再加!好急!!!

解决方案 »

  1.   

    一个解决方法是用消息通知
    将你的控件View类的m_hWnd可见
    然后做一些自定义的Message Handler
    然后其他类通过SendMessage提交Message
    Message Handler中Fire事件
    万不可再其他线程中Fire事件,必须在主线程中Fire事件
      

  2.   

    我的控件没有View类啊,如何找到?能不能说的详细点,不好意思我做ActiveX还是头一回,另外
    我的事件是再一个独立的线程中触发,这样会有什么问题么?
    这个问题有没有别的办法触发?
      

  3.   

    在你的控件中添加消息处理事件,并且把它fire出来。这样在外部调用的时候就可以处理该事件了!
      

  4.   

    哦,我说的是用ATL做ActiveX控件了MFC的ActiveX控件我不是很熟悉,但是那个Ctrl的类也是由hwnd的
    就是说你也可以对他SendMessage在ATL ActiveX控件中,不在主线程激发事件会造成该控件用vb调用
    时,会有问题。MFC的不知道。以下给你我在ATL中的实现
    在BEGIN_MSG_MAP(xxx)和END_MSG_MAP之间加入
    MESSAGE_HANDLER(DMC_MOTION, OnMotion)然后处理函数
    LRESULT OnMotion(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
    if(m_bIsMotionDetect && m_bIsMotionAlarmNotify)
    Fire_OnAlarmChange(MOTION_ALARM_PORT, 1, 0); return 0;
    }使用时
    SendMessage(pCamView->m_hWnd, DMC_DIGITAL, ntohs(pEvNotifyMsg->EventArgument), 0);当然,DMC_DIGITAL是预先定义好了,比如WM_USER + 101
      

  5.   

    to:xiaohyy(醉大饿极) 
    连接点是什么?
      

  6.   

    我在使用我定义的事件DataArrival的时候总是出现下面的错误,而且我定义的Implementation就是DataArrival(相当于一般常用的FirexXXX).怎么办啊?好急!!!--------------------Configuration: NOPOPhone - Win32 Debug--------------------
    Compiling...
    MainProcess.cpp
    D:\My Source\TelSys\NOPOPhone\MainProcess.cpp(88) : error C2248: 'DataArrival' : cannot access protected member declared in class 'CNOPOPhoneCtrl'
            d:\my source\telsys\nopophone\nopophonectl.h(58) : see declaration of 'DataArrival'
    D:\My Source\TelSys\NOPOPhone\MainProcess.cpp(88) : error C2352: 'CNOPOPhoneCtrl::DataArrival' : illegal call of non-static member function
            d:\my source\telsys\nopophone\nopophonectl.h(58) : see declaration of 'DataArrival'
    NOPOPhoneCtl.cpp
    Generating Code...
    Error executing cl.exe.NOPOPhone.ocx - 2 error(s), 0 warning(s)
      

  7.   

    有没有人能解决啊?这个问题我想不难啊?难道大家都没用MFC写过控件?????如果写过那你们的事件都是怎么触发的啊?总不能把一万多行代码都写在一个模块里吧!!???