解决方案 »

  1.   

    在子线程也要CoInitialize
    加如下代码
    if (CoInitialize(NULL)!=0) 

    AfxMessageBox("初始化COM支持库失败!"); 
    exit(1); 
    }
      

  2.   

    这不是什么子线程的问题,没有初始化,
    初始化函数中添加
    ::CoInitialize(NULL);//初始化OK
      

  3.   

      COM Tutorial Samples  
    Tutorial Home   
    Using Samples   
    First Lesson List of Lessons
    Click a lesson link below to jump to the tutorial narrative for the associated code sample. Directory/Sample  Lesson  Topic  
    APPUTIL  Lesson 0  Win32 Basics: Win32 Application Utility Library  
    READTUT  Lesson 1  Win32 Basics: Tutorial Reader and Linking to APPUTIL  
    EXESKEL  Lesson 2  Win32 Basics: Win32 EXE Skeleton Application  
    DLLSKEL  Lesson 3  Win32 Basics: Win32 DLL Skeleton  
    DLLUSER  Lesson 4  Win32 Basics: EXE User of a DLL  
    COMOBJ  Lesson 5  COM Objects: Containment and Aggregation in a DLL  
    COMUSER  Lesson 6  COM Objects: Nested Aggregation in an EXE User  
    REGISTER  Lesson 7  COM Components: Component Object Registration  
    DLLSERVE  Lesson 8  COM Components: Component Object DLL Server  
    DLLCLIEN  Lesson 9  COM Components: Client Application of DLL Server  
    LICSERVE  Lesson 10  COM Components: DLL Licensed Server  
    LICCLIEN  Lesson 11  COM Components: Client Application of Licensed Server  
    MARSHAL  Lesson 12  COM Components: Custom Interface Standard Marshaling  
    MARSHAL2  Lesson 13  COM Components: Marshaling DLL Self-Registration  
    LOCSERVE  Lesson 14  COM Components: Local Server  
    LOCCLIEN  Lesson 15  COM Components: Client Application of Local Server  
    APTSERVE  Lesson 16  COM Components: Local Server with Multiple Apartments  
    APTCLIEN  Lesson 17  COM Components: Client of Multiple Apartment Server  
    REMCLIEN  Lesson 18  COM Components: Distributed COM (DCOM) Remote Client  
    FRESERVE  Lesson 19  COM Components: Free-threaded Server  
    FRECLIEN  Lesson 20  COM Components: Client of Free-threaded Server  
    CONSERVE  Lesson 21  COM Components: Connectable Object Server  
    CONCLIEN  Lesson 22  COM Components: Client of Connectable Object Server  
    STOSERVE  Lesson 23  COM Components: Structured Storage Server  
    STOCLIEN  Lesson 24  COM Components: Client of Structured Storage Server  
    PERSERVE  Lesson 25  COM Components: IPersistStream Persistent Object Server  
    PERTEXT  Lesson 26  COM Components: IPersistStreamInit Persistent Object Server  
    PERDRAW  Lesson 27  COM Components: IPersistStorage Persistent Object Server  
    PERCLIEN  Lesson 28  COM Components: Client of Persistent Object Servers  
    DCDMARSH  Lesson 29  COM Components: Standard Marshaling for DCOM  
    DCDSERVE  Lesson 30  COM Components: DCOM Server Using Security  
    DCOMDRAW  Lesson 31  COM Components: DCOM Client Using Security  
    INC  --  Common include directory used by the code samples  
    LIB  --  Common library directory used by the code samples  
    TUTSAMP  --  Main branch directory with TUTORIAL.EXE, MAKEALL.BAT, etc.  
    Throughout the sample sequence a clear differentiation is maintained between client and server, with a separate lesson sample for each. Usually, each client/server pair covers an area of COM technology. Here is an overview of the technologies covered by the lessons. Basic Win32 application programming is covered in the APPUTIL, READTUT, EXESKEL, DLLSKEL, and DLLUSER lessons. APPUTIL provides a utility framework for building Win32 applications. It also contains some tools needed for tutorial purposes. READTUT is a very simple EXE application that shows how to link to the APPUTIL static library and call utility functions in it. READTUT also shows how to invoke the COM tutorial Web page reader that is used throughout the sample series. EXESKEL shows a basic Win32 skeleton EXE application built using APPUTIL. DLLSKEL and DLLUSER simularly show a basic Win32 DLL (Dynamic Link Library) skeleton and how to access it from an EXE user application. Basic COM object construction, custom interfaces, and techniques for coding their reuse using aggregation and containment are covered in COMOBJ and COMUSER. The implementation and use of the standard IUnknown interface is covered. The implementation and use of the custom ICar, IUtility, and ICruise interfaces is covered. Basic COM component construction, class factories, component object registration, and techniques for housing COM objects in COM component servers are covered in REGISTER, DLLSERVE, and DLLCLIEN. The implementation and use of the standard IClassFactory interface is covered. COM component Licensing is covered in LICSERVE and LICCLIEN. The implementation and use of the standard IClassFactory2 interface is covered. Out-of-Process local servers and the standard marshaling of custom interfaces are covered in MARSHAL, LOCSERVE, and LOCCLIEN. Explicit self-registration in the standard marshaling DLL is covered in MARSHAL2. The use of the MIDL language to specify custom interfaces is covered. The use of the MIDL compiler to produce proxy/stub marshaling servers is also covered. Apartment model server and client construction are covered in APTSERVE and APTCLIEN. Construction of multiple single-threaded apartments (STAs) in the same process is covered. DCOM (Distributed COM) with custom interfaces operating between client and server across machine boundaries is covered in REMCLIEN. Specifying the remote machine name in the COSERVERINFO structure is covered. Detailed DCOM security issues are not covered. Free-threaded COM components and their access by free-threaded clients are covered in FRESERVE and FRECLIEN. The use of several client worker threads in the multi-threaded apartment (MTA) is covered. The implementation and use of a custom IBall interface is covered. Connectable COM object technology is covered in CONSERVE and CONCLIEN. Event source and sink construction is covered. Implementation and use of the IConnectionPointContainer, IConnectionPoint, IEnumConnectionPoints, and IEnumConnections standard interfaces are covered. The implementation and use of the custom IBall and IBallSink interfaces is covered. Structured storage using COM's compound file technology is covered in STOSERVE and STOCLIEN. A COM-based scribble drawing application is used. Use of the IStorage and IStream standard interfaces is covered. The implementation and use of the custom IPaper and IPaperSink interfaces is covered. Persistent COM objects are covered in PERSERVE, PERTEXT, PERDRAW, and PERCLIEN. IPersistStream is covered in the PERSERVE components. IPersistStreamInit is covered in the PERTEXT components. IPersistStorage is covered in the PERDRAW components. The PERCLIEN client functions these various persistent objects and manages storage for all of them in various substorages and streams within one structured storage compound file. The implementation and use of the custom IPageList, ITextPage, IDrawPage, IPageListSink, ITextPageSink, and IDrawPageSink interfaces is covered. DCOM (Distributed COM) Security is covered in DCDMARSH, DCDSERVE, and DCOMDRAW. The use of CoInitializeSecurity is shown in the DCDSERVE and DCOMDRAW samples. Multiple clients accessing a shared single COM object across machine boundaries is shown in a simple network shared-drawing application. Process and activation security within NT network domains is discussed. Registry AppIDs and their LaunchPermission, AccessPermission, and RunAs named values are discussed. The use of the DCOMCNFG utility is covered.  Back to page top  
    © 1995-1998 Microsoft Corporation 
      

  4.   


    try
    {
    //崩溃掉的地方
    }
    catch(COleException* exception)
    {
    TCHAR error[2048]={0};
    exception->GetErrorMessage(error,2048);
    AfxMessageBox(error, MB_OK | MB_SETFOREGROUND);
    }
    看看什么错误