CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

如何在sdk中使用activeX

楼主zzzzzz7()2002-07-02 14:32:55 在 VC/MFC / ATL/ActiveX/COM 提问

如何在sdk中使用activeX 问题点数:50、回复次数:3Top

1 楼masterz(www.fruitfruit.com)回复于 2002-07-02 16:03:53 得分 50

////////////////////////////////////////////////////////////////////////////////  
  //   Use   swflash.ocx   to   play   flash    
  //   if   it   works,   it   is   written   by   masterz,   otherwise   I   don't   know   who   writes   it(*_*)  
  ////////////////////////////////////////////////////////////////////////////////  
  //#include   "stdafx.h"  
  #define   MAX_LOADSTRING   100  
  #import   "c:\winnt\system32\macromed\flash\swflash.ocx"  
  #include   <atlbase.h>  
    CComModule   _Module;  
  #include   <atlwin.h>  
  #pragma   comment(lib,"atl")  
  #define   ODS(x)   OutputDebugString(x)  
   
  //class   CFlashSink   :   public   IDispatch,public   ShockwaveFlashObjects::DShockwaveFlashEvents  
    class   CFlashSink   :   public   ShockwaveFlashObjects::DShockwaveFlashEvents  
  {  
  public:  
  CFlashSink()   :   m_pFlash(NULL),   m_dwRef(1),  
  m_hrConnected(CONNECT_E_CANNOTCONNECT),  
  m_dwCookie(0),   m_pCP(NULL)  
  {  
  }  
   
  ~CFlashSink()  
  {  
  }  
   
  HRESULT   Init(ShockwaveFlashObjects::IShockwaveFlash*   pWin)  
  {  
  HRESULT   hr   =   NOERROR;  
  LPCONNECTIONPOINTCONTAINER   pCPC   =   NULL;  
  if   (m_pFlash)  
  m_pFlash->Release();  
  m_pFlash   =   pWin;  
  if   (FAILED(hr   =   pWin->QueryInterface(IID_IConnectionPointContainer,   (LPVOID*)&pCPC)))  
  goto   Error;  
  if   (FAILED(hr   =   pCPC->FindConnectionPoint(__uuidof(ShockwaveFlashObjects::DShockwaveFlashEvents),   &m_pCP)))  
  goto   Error;  
  m_hrConnected   =   m_pCP->Advise((LPUNKNOWN)this,   &m_dwCookie);  
  ODS("Init   runs   well");  
  Error:  
  if   (pCPC)   pCPC->Release();  
  return   hr;  
  }  
  HRESULT   Passivate()  
  {  
  HRESULT   hr   =   NOERROR;  
  if   (m_pCP)  
  {  
  if   (m_dwCookie)  
  {  
  hr   =   m_pCP->Unadvise(m_dwCookie);  
  m_dwCookie   =   0;  
  }  
    m_pCP->Release();  
    m_pCP   =   NULL;  
  }  
  if   (m_pFlash)  
  {  
  m_pFlash->Release();  
  m_pFlash   =   NULL;  
  }  
  return   NOERROR;  
  }  
  //   IUnknown   methods  
          STDMETHOD(QueryInterface)(REFIID   riid,   LPVOID*   ppv)  
  {  
  *ppv   =   NULL;  
  if   (IID_IUnknown   ==   riid)  
  {  
  *ppv   =   (LPUNKNOWN)this;  
  AddRef(); ODS("IID_IUnknown");  
  return   NOERROR;  
  }  
  else   if   (IID_IDispatch   ==   riid)  
  {  
  *ppv   =   (IDispatch*)this;  
  AddRef(); ODS("IID_IDispatch");  
  return   NOERROR;  
  }  
  else   if(riid==__uuidof(ShockwaveFlashObjects::DShockwaveFlashEvents))  
  {  
  *ppv   =   (ShockwaveFlashObjects::DShockwaveFlashEvents*)this;  
  AddRef(); ODS("DShockwaveFlashEvents");  
  return   NOERROR;  
  }  
  else  
  {  
  OLECHAR   wszBuff[39];  
  int   i   =   StringFromGUID2(riid,   wszBuff,   39);  
  TCHAR   szBuff[39];  
  i   =   WideCharToMultiByte(CP_ACP,   0,   wszBuff,   -1,   szBuff,   39,   NULL,   NULL);  
  ODS("CFlashSink   QI:   ");   ODS(szBuff);   ODS("\n");  
  return   E_NOTIMPL;  
  }  
  }          
          STDMETHOD_(ULONG,   AddRef)()  
  {  
  TCHAR   szBuff[255];  
  wsprintf(szBuff,   "CFlashSink   refcount   increased   to   %d\n",   m_dwRef+1);  
  ODS(szBuff);  
  return   ++m_dwRef;  
  }          
          STDMETHOD_(ULONG,   Release)()  
  {  
  TCHAR   szBuff[255];  
  if   (--m_dwRef   ==   0)    
  {    
  ODS("Deleting   CFlashSink\n");  
  delete   this;    
  return   0;    
  }  
  wsprintf(szBuff,   "CFlashSink   refcount   reduced   to   %d\n",   m_dwRef);  
  ODS(szBuff);  
  return   m_dwRef;  
  }  
   
  //   IDispatch   method  
  STDMETHOD(GetTypeInfoCount)(UINT*   pctinfo)  
  {   ODS("GetTypeInfoCount\n");   return   E_NOTIMPL;   }  
   
  STDMETHOD(GetTypeInfo)(UINT   iTInfo,  
                          LCID   lcid,  
                          ITypeInfo**   ppTInfo)  
  {   ODS("GetTypeInfo\n");   return   E_NOTIMPL;   }  
   
  STDMETHOD(GetIDsOfNames)(REFIID   riid,  
                          LPOLESTR*   rgszNames,  
                          UINT   cNames,  
                          LCID   lcid,  
                          DISPID*   rgDispId)  
  {   ODS("GetIDsOfNames\n");   return   E_NOTIMPL;   }  
                   
  STDMETHOD(Invoke)(DISPID   dispIdMember,  
                          REFIID   riid,  
                          LCID   lcid,  
                          WORD   wFlags,  
  DISPPARAMS   __RPC_FAR   *pDispParams,  
                          VARIANT   __RPC_FAR   *pVarResult,  
                          EXCEPINFO   __RPC_FAR   *pExcepInfo,  
                          UINT   __RPC_FAR   *puArgErr)  
  {  
   
  if   (!pVarResult)  
  {  
  return   E_POINTER;  
  }  
  switch(dispIdMember)  
  {  
  case   0x7a6:  
  ODS("OnProgress");  
  break;  
  case   0x96:  
  ODS("FSCommand");  
  break;  
  case   DISPID_READYSTATECHANGE:  
  ODS("OnReadyStateChange");  
  break;  
  default:  
  TCHAR   szBuff[255];  
  wsprintf(szBuff,"dispIdMember=%d",dispIdMember);  
  ODS(szBuff);  
  return   DISP_E_MEMBERNOTFOUND;  
  }  
  return   NOERROR;  
  }            
          HRESULT   OnReadyStateChange   (  
                  long   newState   )  
  {  
  ODS("OnReadyStateChange");  
  }  
          HRESULT   OnProgress   (  
                  long   percentDone   )  
  {  
  ODS("OnProgress");  
  }  
          HRESULT   FSCommand   (  
                  _bstr_t   command,  
                  _bstr_t   args   )  
  {  
  ODS("FSCommand");  
  }  
  private:  
  ShockwaveFlashObjects::IShockwaveFlash*   m_pFlash;  
  DWORD   m_dwRef;  
  LPCONNECTIONPOINT   m_pCP;  
  HRESULT   m_hrConnected;  
  DWORD   m_dwCookie;  
  };  
  //   Global   Variables:  
  HINSTANCE   hInst; //   current   instance  
  TCHAR   szTitle[MAX_LOADSTRING]; //   The   title   bar   text  
  TCHAR   szWindowClass[MAX_LOADSTRING]; //   The   title   bar   text  
  CAxWindow   m_container;  
  CFlashSink   g_FlashSink;  
  using   namespace   ShockwaveFlashObjects;  
  IShockwaveFlash*   shwaveflash;  
   
  //   Foward   declarations   of   functions   included   in   this   code   module:  
  ATOM MyRegisterClass(HINSTANCE   hInstance);  
  BOOL InitInstance(HINSTANCE,   int);  
  LRESULT   CALLBACK WndProc(HWND,   UINT,   WPARAM,   LPARAM);  
   
   
   
  Top

2 楼masterz(www.fruitfruit.com)回复于 2002-07-02 16:04:41 得分 0

int   APIENTRY   WinMain(HINSTANCE   hInstance,  
                                            HINSTANCE   hPrevInstance,  
                                            LPSTR           lpCmdLine,  
                                            int               nCmdShow)  
  {  
  MSG   msg;  
  //   Initialize   global   strings  
  wsprintf(szTitle,"use   flash   control   in   sdk   exe");  
  wsprintf(szWindowClass,"flashinsdk");  
  MyRegisterClass(hInstance);  
  CoInitialize(NULL);  
  //   Perform   application   initialization:  
  if   (!InitInstance   (hInstance,   nCmdShow))    
  return   FALSE;  
  while   (GetMessage(&msg,   NULL,   0,   0))    
  {  
  TranslateMessage(&msg);  
  DispatchMessage(&msg);  
  }  
  CoUninitialize();  
  return   msg.wParam;  
  }  
     
  //     FUNCTION:   MyRegisterClass()  
  //     PURPOSE:   Registers   the   window   class.  
  ATOM   MyRegisterClass(HINSTANCE   hInstance)  
  {  
  WNDCLASSEX   wcex;  
  wcex.cbSize   =   sizeof(WNDCLASSEX);    
  wcex.style =   CS_HREDRAW   |   CS_VREDRAW;  
  wcex.lpfnWndProc =   (WNDPROC)WndProc;  
  wcex.cbClsExtra =   0;  
  wcex.cbWndExtra =   0;  
  wcex.hInstance =   hInstance;  
  wcex.hIcon =   LoadIcon(NULL,   IDI_APPLICATION);  
  wcex.hCursor =   LoadCursor(NULL,   IDC_ARROW);  
  wcex.hbrBackground =   (HBRUSH)(COLOR_WINDOW+1);  
  wcex.lpszMenuName =   NULL;//(LPCSTR)IDC_FLSH;  
  wcex.lpszClassName =   szWindowClass;  
  wcex.hIconSm =   LoadIcon(NULL,   IDI_APPLICATION);  
  return   RegisterClassEx(&wcex);  
  }  
   
  //       FUNCTION:   InitInstance(HANDLE,   int)  
  //       PURPOSE:   Saves   instance   handle   and   creates   main   window  
  BOOL   InitInstance(HINSTANCE   hInstance,   int   nCmdShow)  
  {  
        HWND   hWnd;  
        hInst   =   hInstance;   //   Store   instance   handle   in   our   global   variable  
  AtlAxWinInit();  
        hWnd   =   CreateWindow(szWindowClass,   szTitle,   WS_OVERLAPPEDWINDOW,  
              CW_USEDEFAULT,   0,   CW_USEDEFAULT,   0,   NULL,   NULL,   hInstance,   NULL);  
        if   (!hWnd)  
              return   FALSE;  
        ShowWindow(hWnd,   nCmdShow);  
        UpdateWindow(hWnd);  
        return   TRUE;  
  }  
  HWND   heditfilepath;  
   
  LRESULT   CALLBACK   WndProc(HWND   hWnd,   UINT   message,   WPARAM   wParam,   LPARAM   lParam)  
  {  
  int   wmId,   wmEvent;  
  PAINTSTRUCT   ps;  
  HDC   hdc;  
  TCHAR   szHello[MAX_LOADSTRING];  
  wsprintf(szHello,"use   flash   control   in   sdk");  
  HWND   hbtnstart;  
  RECT   rc;  
  switch   (message)    
  {  
  case   WM_CREATE:  
  GetClientRect(hWnd,   &rc   );  
  rc.top   =   (rc.bottom+rc.top)/2;  
  m_container.Create(   hWnd,   rc,   LPCTSTR("ShockwaveFlash.ShockwaveFlash.1"),   WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL   );//create   a   browser   control  
  hbtnstart=CreateWindow("BUTTON","play",WS_CHILD|WS_VISIBLE,0,0,120,30,hWnd,(HMENU)0x100,hInst,0);  
  heditfilepath=CreateWindow("EDIT","filepath",WS_CHILD|WS_VISIBLE|WS_BORDER,0,40,420,30,hWnd,(HMENU)0x101,hInst,0);  
  SetWindowText(heditfilepath,"c:\\downloads\\radin\\flash\\2.1.swf");  
  m_container.QueryControl(   __uuidof(IShockwaveFlash),   reinterpret_cast<void**>(&shwaveflash)   );  
  g_FlashSink.Init(shwaveflash);  
  break;  
  case   WM_SIZING:  
  GetClientRect(hWnd,   &rc   );  
  rc.top   =   (rc.bottom+rc.top)/2;  
  m_container.MoveWindow(&rc,true);  
  break;  
  case   WM_COMMAND:  
  wmId         =   LOWORD(wParam);    
  wmEvent   =   HIWORD(wParam);    
  //   Parse   the   menu   selections:  
  switch   (wmId)  
  {  
  case   0x100:  
  {  
  ODS("0x100");  
  char   buf[256];  
  GetWindowText(heditfilepath,buf,255);  
  _bstr_t   bstr((char*)buf);  
  ODS(buf);  
  //bstr=_bstr_t("c:\\downloads\\radin\\flash\\2.1.swf");  
  shwaveflash->put_Movie(bstr);   //   you   have   to   change   the   path   here  
  shwaveflash->Play();  
  }  
  break;  
  default:  
        return   DefWindowProc(hWnd,   message,   wParam,   lParam);  
  }  
  break;  
  case   WM_PAINT:  
  hdc   =   BeginPaint(hWnd,   &ps);  
  RECT   rt;  
  GetClientRect(hWnd,   &rt);  
  DrawText(hdc,   szHello,   strlen(szHello),   &rt,   DT_CENTER);  
  EndPaint(hWnd,   &ps);  
  break;  
  case   WM_DESTROY:  
  PostQuitMessage(0);  
  break;  
  default:  
  return   DefWindowProc(hWnd,   message,   wParam,   lParam);  
        }  
        return   0;  
  }Top

相关问题

  • 如何使用sdk
  • 如何使用activex control??
  • SDK中的ActiveX控件使用
  • SDK中如何使用ListCtrl???
  • asp中如何使用ActiveX control
  • 如何在jsp中使用activex?
  • ActiveX控件如何注册和使用?
  • 在VC++中如何使用ActiveX控件?
  • 如何在DLL中使用ActiveX控件
  • 如何使用ActiveX。EXE 程序?

关键词

  • hr
  • null
  • pcpc
  • cflashsink
  • pflash
  • shockwaveflashobjects
  • dshockwaveflashevents
  • pcp
  • pwin
  • hresult

得分解答快速导航

  • 帖主:zzzzzz7
  • masterz

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo