UP!
这儿提问真是火爆,不up不行啊。

解决方案 »

  1.   

    myCtl创建成功了吗?
    加个判断:if(MyCtl.m_hWnd!=NULL)
    AfxBeginThread(GetFluxThreadProc,&MyCtl);
      

  2.   

    只要控件创建成功,应改是没有问题,我用vc得标准控件做过,很正常:)还有,你的线程GetFluxThreadProc是什么啊?函数名不是ThreadProc么?
      

  3.   

    好象可视控件大都不是Free Threading Model的, 
    一般都是Apartment的, 
    Apartment的意思就是一个线程里可以使用多个Control, 但是一个Control只能在同一线程中使用.to: liugy
    UP 就是把文章更新后置'顶'的意思
      

  4.   

    to 楼上
    是笔误,应该是ThreadPro。
    to 光哥
    MyCtl创建成功了,在CMainFrame的成员函数里,直接调用MyCtl.Fuction()是可以的,完全正常,只是线程中不行。
    ps.  up就是把帖子抬一抬,才发了几分钟就给淹到第二页去了,那谁还来看。
      

  5.   

    刚才给控件里添加了一个void成员函数,不加任何代码。线程可以正常调用。
      

  6.   

    可能是similar99说得那样,我看了一下msdn的文档TN064,
    BOOL AFXAPI AfxOleRegisterControlClass( HINSTANCE hInstance, REFCLSID clsid, LPCTSTR pszProgID, UINT idTypeName, UINT idBitmap, int nRegFlags, DWORD dwMiscStatus, REFGUID tlid, WORD wVerMajor, WORD wVerMinor );
    的nRegFlags,可以指定为afxRegApartmentThreading,这样一个控件的实例的所有调用只能在一个线程里。
    注册的时候我是用右键打开regsvr32.exe的方法,难道已经被指定为apartment的吗,是否在代码里重新注册,而不使之为apartment呢?
    请大家赐教,谢谢~~~
      

  7.   

    好想Control的Threading model不是regsvr32.exe决定的吧...
    是在control原码里就写死了的. 象ATL里一个Control继承CComObjectRootEx时,使用CComMultiThreadModel做template的parameter就是Free, 使用CComSingleThreadModel做template的parameter就是Apartment了.
      

  8.   

    好想Control的Threading model不是regsvr32.exe决定的吧...
    是在control原码里就写死了的. 象ATL里一个Control继承CComObjectRootEx时,使用CComMultiThreadModel做template的parameter就是Free, 使用CComSingleThreadModel做template的parameter就是Apartment了.