Advertisement
ElfikCo

SO Lab5

Dec 13th, 2019
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.69 KB | None | 0 0
  1. // SOAnimacjaCtrl.cpp : Implementation of the CSOAnimacjaCtrl ActiveX Control class.
  2.  
  3. #include "stdafx.h"
  4. #include "ActiveX.h"
  5. #include "SOAnimacjaCtrl.h"
  6. #include "SOAnimacjaPpg.h"
  7. #include ".\soanimacjactrl.h"
  8.  
  9.  
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #endif
  13.  
  14.  
  15. IMPLEMENT_DYNCREATE(CSOAnimacjaCtrl, COleControl)
  16.  
  17.  
  18.  
  19. // Message map
  20.  
  21. BEGIN_MESSAGE_MAP(CSOAnimacjaCtrl, COleControl)
  22.     ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
  23.     ON_WM_CREATE()
  24. END_MESSAGE_MAP()
  25.  
  26.  
  27.  
  28. // Dispatch map
  29.  
  30. BEGIN_DISPATCH_MAP(CSOAnimacjaCtrl, COleControl)
  31.     DISP_FUNCTION_ID(CSOAnimacjaCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
  32.     DISP_FUNCTION_ID(CSOAnimacjaCtrl, "Uruchom", dispidUruchom, Uruchom, VT_EMPTY, VTS_NONE)
  33.     DISP_FUNCTION_ID(CSOAnimacjaCtrl, "Zatrzymaj", dispidZatrzymaj, Zatrzymaj, VT_EMPTY, VTS_NONE)
  34.     DISP_PROPERTY_EX_ID(CSOAnimacjaCtrl, "FileName", dispidFileName, GetFileName, SetFileName, VT_BSTR)
  35. END_DISPATCH_MAP()
  36.  
  37.  
  38.  
  39. // Event map
  40.  
  41. BEGIN_EVENT_MAP(CSOAnimacjaCtrl, COleControl)
  42. END_EVENT_MAP()
  43.  
  44.  
  45.  
  46. // Property pages
  47.  
  48. // TODO: Add more property pages as needed.  Remember to increase the count!
  49. BEGIN_PROPPAGEIDS(CSOAnimacjaCtrl, 1)
  50.     PROPPAGEID(CSOAnimacjaPropPage::guid)
  51. END_PROPPAGEIDS(CSOAnimacjaCtrl)
  52.  
  53.  
  54.  
  55. // Initialize class factory and guid
  56.  
  57. IMPLEMENT_OLECREATE_EX(CSOAnimacjaCtrl, "ACTIVEX.SOAnimacjaCtrl.1",
  58.     0x868be5f4, 0x6621, 0x4957, 0x86, 0x1b, 0x3d, 0x70, 0x19, 0x8e, 0x83, 0xba)
  59.  
  60.  
  61.  
  62. // Type library ID and version
  63.  
  64. IMPLEMENT_OLETYPELIB(CSOAnimacjaCtrl, _tlid, _wVerMajor, _wVerMinor)
  65.  
  66.  
  67.  
  68. // Interface IDs
  69.  
  70. const IID BASED_CODE IID_DActiveX =
  71.         { 0xF7079B75, 0x586B, 0x4B4F, { 0x94, 0x6B, 0x6C, 0x5, 0xA5, 0xD5, 0xC0, 0x2F } };
  72. const IID BASED_CODE IID_DActiveXEvents =
  73.         { 0x583CF5B7, 0x44A0, 0x4438, { 0xA1, 0xF9, 0x3C, 0x79, 0xB1, 0x5C, 0xBA, 0x45 } };
  74.  
  75.  
  76.  
  77. // Control type information
  78.  
  79. static const DWORD BASED_CODE _dwActiveXOleMisc =
  80.     OLEMISC_ACTIVATEWHENVISIBLE |
  81.     OLEMISC_SETCLIENTSITEFIRST |
  82.     OLEMISC_INSIDEOUT |
  83.     OLEMISC_CANTLINKINSIDE |
  84.     OLEMISC_RECOMPOSEONRESIZE;
  85.  
  86. IMPLEMENT_OLECTLTYPE(CSOAnimacjaCtrl, IDS_ACTIVEX, _dwActiveXOleMisc)
  87.  
  88.  
  89.  
  90. // CSOAnimacjaCtrl::CSOAnimacjaCtrlFactory::UpdateRegistry -
  91. // Adds or removes system registry entries for CSOAnimacjaCtrl
  92.  
  93. BOOL CSOAnimacjaCtrl::CSOAnimacjaCtrlFactory::UpdateRegistry(BOOL bRegister)
  94. {
  95.     // TODO: Verify that your control follows apartment-model threading rules.
  96.     // Refer to MFC TechNote 64 for more information.
  97.     // If your control does not conform to the apartment-model rules, then
  98.     // you must modify the code below, changing the 6th parameter from
  99.     // afxRegApartmentThreading to 0.
  100.  
  101.     if (bRegister)
  102.         return AfxOleRegisterControlClass(
  103.             AfxGetInstanceHandle(),
  104.             m_clsid,
  105.             m_lpszProgID,
  106.             IDS_ACTIVEX,
  107.             IDB_ACTIVEX,
  108.             afxRegApartmentThreading,
  109.             _dwActiveXOleMisc,
  110.             _tlid,
  111.             _wVerMajor,
  112.             _wVerMinor);
  113.     else
  114.         return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
  115. }
  116.  
  117.  
  118.  
  119. // CSOAnimacjaCtrl::CSOAnimacjaCtrl - Constructor
  120.  
  121. CSOAnimacjaCtrl::CSOAnimacjaCtrl()
  122. : m_pMyAnimateCtrl(NULL)
  123. , m_fileName(_T(""))
  124. {
  125.     InitializeIIDs(&IID_DActiveX, &IID_DActiveXEvents);
  126.     // TODO: Initialize your control's instance data here.
  127. }
  128.  
  129. // CSOAnimacjaCtrl::~CSOAnimacjaCtrl - Destructor
  130. CSOAnimacjaCtrl::~CSOAnimacjaCtrl()
  131. {
  132.     // TODO: Cleanup your control's instance data here.
  133.     m_pMyAnimateCtrl->DestroyWindow();
  134.     delete m_pMyAnimateCtrl;
  135. }
  136.  
  137.  
  138. // CSOAnimacjaCtrl::OnDraw - Drawing function
  139.  
  140. void CSOAnimacjaCtrl::OnDraw(
  141.             CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
  142. {
  143.     if (!pdc)
  144.         return;
  145.  
  146.     // TODO: Replace the following code with your own drawing code.
  147.     pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
  148.     pdc->Ellipse(rcBounds);
  149. }
  150.  
  151.  
  152.  
  153. // CSOAnimacjaCtrl::DoPropExchange - Persistence support
  154.  
  155. void CSOAnimacjaCtrl::DoPropExchange(CPropExchange* pPX)
  156. {
  157.     ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
  158.     COleControl::DoPropExchange(pPX);
  159.  
  160.     // TODO: Call PX_ functions for each persistent custom property.
  161. }
  162.  
  163.  
  164.  
  165. // CSOAnimacjaCtrl::OnResetState - Reset control to default state
  166.  
  167. void CSOAnimacjaCtrl::OnResetState()
  168. {
  169.     COleControl::OnResetState();  // Resets defaults found in DoPropExchange
  170.  
  171.     // TODO: Reset any other control state here.
  172. }
  173.  
  174.  
  175.  
  176. // CSOAnimacjaCtrl::AboutBox - Display an "About" box to the user
  177.  
  178. void CSOAnimacjaCtrl::AboutBox()
  179. {
  180.     CDialog dlgAbout(IDD_ABOUTBOX_ACTIVEX);
  181.     dlgAbout.DoModal();
  182. }
  183.  
  184.  
  185.  
  186. // CSOAnimacjaCtrl message handlers
  187.  
  188. int CSOAnimacjaCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
  189. {
  190.  
  191.  
  192.     // TODO:  Add your specialized creation code here
  193.     m_pMyAnimateCtrl = new CAnimateCtrl;
  194.     CRect wndSize;
  195.     this->GetClientRect(wndSize);
  196. #define ID_SOANIMCTRL 1001
  197.     UINT styles = WS_CHILD | ACS_TRANSPARENT | ACS_AUTOPLAY | ACS_CENTER;
  198.     m_pMyAnimateCtrl->Create(styles, wndSize, this, ID_SOANIMCTRL);
  199.     m_pMyAnimateCtrl->ShowWindow(SW_SHOW);
  200.     m_pMyAnimateCtrl->Open("C:\\Avi\\kula.avi");
  201.  
  202.     return 0;
  203. }
  204.  
  205.  
  206. void CSOAnimacjaCtrl::Uruchom(void)
  207. {
  208.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  209.  
  210.     // TODO: Add your dispatch handler code here
  211.     m_pMyAnimateCtrl->Play(0, -1, -1);
  212. }
  213.  
  214. void CSOAnimacjaCtrl::Zatrzymaj(void)
  215. {
  216.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  217.  
  218.     // TODO: Add your dispatch handler code here
  219.     m_pMyAnimateCtrl->Stop();
  220. }
  221.  
  222. BSTR CSOAnimacjaCtrl::GetFileName(void)
  223. {
  224.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  225.  
  226.     CString strResult;
  227.  
  228.     // TODO: Add your dispatch handler code here
  229.  
  230.     return strResult.AllocSysString();
  231. }
  232.  
  233. void CSOAnimacjaCtrl::SetFileName(LPCTSTR newVal)
  234. {
  235.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  236.  
  237.     // TODO: Add your property handler code here
  238.     m_pMyAnimateCtrl->Open(newVal);
  239.  
  240.     SetModifiedFlag();
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement