home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / Scrmain.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-07-07  |  11.8 KB  |  507 lines

  1. // ScrMain.cpp : implementation of the CScrMain class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "ScrDemo.h"
  6. #include "ScrMain.h"
  7. #include "..\\..\\..\\..\\include\\ltscrocx.h"
  8.  
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. extern CScrDemo theApp;
  15.  
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CScrMain
  18.  
  19. IMPLEMENT_DYNAMIC(CScrMain, CMDIFrameWnd)
  20.  
  21. BEGIN_MESSAGE_MAP(CScrMain, CMDIFrameWnd)
  22.     //{{AFX_MSG_MAP(CScrMain)
  23.     ON_WM_CREATE()
  24.     ON_COMMAND(IDM_CAPTURE_ACTIVECLIENT, OnCaptureActiveclient)
  25.     ON_COMMAND(IDM_CAPTURE_ACTIVEWINDOW, OnCaptureActivewindow)
  26.     ON_COMMAND(IDM_CAPTURE_FROMEXEDLGTABBEDVIEW, OnCaptureFromexedlgtabbedview)
  27.     ON_COMMAND(IDM_CAPTURE_FROMEXEDLGTREE, OnCaptureFromexedlgtree)
  28.     ON_COMMAND(IDM_CAPTURE_FULLSCREEN, OnCaptureFullscreen)
  29.     ON_COMMAND(IDM_CAPTURE_MENUUNDERCURSOR, OnCaptureMenuundercursor)
  30.     ON_COMMAND(IDM_CAPTURE_MOUSECURSOR, OnCaptureMousecursor)
  31.     ON_COMMAND(IDM_CAPTURE_SELECTEDAREA, OnCaptureSelectedarea)
  32.     ON_COMMAND(IDM_CAPTURE_SELECTEDOBJECT, OnCaptureSelectedobject)
  33.     ON_COMMAND(IDM_CAPTURE_WALLPAPER, OnCaptureWallpaper)
  34.     ON_COMMAND(IDM_CAPTURE_WINDOWUNDERCURSOR, OnCaptureWindowundercursor)
  35.     ON_COMMAND(IDM_OPTIONS_AREA, OnOptionsArea)
  36.     ON_COMMAND(IDM_OPTIONS_OBJECT, OnOptionsObject)
  37.     ON_COMMAND(IDM_OPTIONS_OPTIONS, OnOptionsOptions)
  38.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_ACTIVECLIENT, OnUpdateCaptureActiveclient)
  39.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_ACTIVEWINDOW, OnUpdateCaptureActivewindow)
  40.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_FROMEXEDLGTABBEDVIEW, OnUpdateCaptureFromexedlgtabbedview)
  41.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_FROMEXEDLGTREE, OnUpdateCaptureFromexedlgtree)
  42.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_FULLSCREEN, OnUpdateCaptureFullscreen)
  43.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_MENUUNDERCURSOR, OnUpdateCaptureMenuundercursor)
  44.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_MOUSECURSOR, OnUpdateCaptureMousecursor)
  45.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_SELECTEDAREA, OnUpdateCaptureSelectedarea)
  46.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_SELECTEDOBJECT, OnUpdateCaptureSelectedobject)
  47.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_WALLPAPER, OnUpdateCaptureWallpaper)
  48.     ON_UPDATE_COMMAND_UI(IDM_CAPTURE_WINDOWUNDERCURSOR, OnUpdateCaptureWindowundercursor)
  49.     //}}AFX_MSG_MAP
  50. END_MESSAGE_MAP()
  51.  
  52. static UINT indicators[] =
  53. {
  54.     ID_SEPARATOR,           // status line indicator
  55.     ID_INDICATOR_CAPS,
  56.     ID_INDICATOR_NUM,
  57.     ID_INDICATOR_SCRL,
  58. };
  59.  
  60. enum
  61. {
  62.    SCRCAP_NONE,
  63.    SCRCAP_FROM_EXE,
  64.    SCRCAP_ACTIVE_WINDOW,
  65.    SCRCAP_ACTIVE_CLIENT,
  66.    SCRCAP_FULL_SCREEN,
  67.    SCRCAP_SELECTED_OBJECT,
  68.    SCRCAP_MENU_UNDERCURSOR,
  69.    SCRCAP_AREA_RECT,
  70.    SCRCAP_AREA_ROUNDRECT,
  71.    SCRCAP_AREA_ELLIPSE,
  72.    SCRCAP_AREA_POLYGON,
  73.    SCRCAP_AREA_FREEHAND,
  74.    SCRCAP_AREA_TRIANGLE,
  75.    SCRCAP_MOUSE_CURSOR,
  76.    SCRCAP_WINDOW_UNDER_CURSOR,
  77.    SCRCAP_WALLPAPER,
  78. };
  79.  
  80. /////////////////////////////////////////////////////////////////////////////
  81. // CScrMain construction/destruction
  82.  
  83. CScrMain::CScrMain()
  84. {
  85.     m_nCapture = SCRCAP_NONE;
  86. }
  87.  
  88. CScrMain::~CScrMain()
  89. {
  90. }
  91.  
  92. int CScrMain::OnCreate(LPCREATESTRUCT lpCreateStruct)
  93. {
  94.     if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  95.         return -1;
  96.     
  97.     if (!m_wndToolBar.Create(this) ||
  98.         !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  99.     {
  100.         TRACE0("Failed to create toolbar\n");
  101.         return -1;      // fail to create
  102.     }
  103.  
  104.     if (!m_wndStatusBar.Create(this) ||
  105.         !m_wndStatusBar.SetIndicators(indicators,
  106.           sizeof(indicators)/sizeof(UINT)))
  107.     {
  108.         TRACE0("Failed to create status bar\n");
  109.         return -1;      // fail to create
  110.     }
  111.  
  112.     // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  113.     m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  114.         CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  115.  
  116.     // TODO: Delete these three lines if you don't want the toolbar to
  117.     //  be dockable
  118.     m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  119.     EnableDocking(CBRS_ALIGN_ANY);
  120.     DockControlBar(&m_wndToolBar);
  121.  
  122.     ///////////////////////////////////////
  123.     // This is my code.
  124.     m_CapOCX.Create(NULL,WS_CHILD,CRect(0,0,0,0),this, IDC_CAPTUREWINDOW);
  125.     m_CapOCX.SetEnableMethodErrors(FALSE);
  126.    m_CapOCX.SetCaptureHotKey(VK_F11);
  127.     // My code ends here
  128.     ///////////////////////////////////////
  129.     return 0;
  130. }
  131.  
  132. BOOL CScrMain::PreCreateWindow(CREATESTRUCT& cs)
  133. {
  134.     // TODO: Modify the Window class or styles here by modifying
  135.     //  the CREATESTRUCT cs
  136.  
  137.     return CMDIFrameWnd::PreCreateWindow(cs);
  138. }
  139.  
  140. /////////////////////////////////////////////////////////////////////////////
  141. // CScrMain diagnostics
  142.  
  143. #ifdef _DEBUG
  144. void CScrMain::AssertValid() const
  145. {
  146.     CMDIFrameWnd::AssertValid();
  147. }
  148.  
  149. void CScrMain::Dump(CDumpContext& dc) const
  150. {
  151.     CMDIFrameWnd::Dump(dc);
  152. }
  153.  
  154. #endif //_DEBUG
  155.  
  156. /////////////////////////////////////////////////////////////////////////////
  157. // CScrMain message handlers
  158.  
  159.  
  160. void CScrMain::OnCaptureFullscreen() 
  161. {
  162.    int nResult, nType=SCRCAP_FULL_SCREEN;
  163.  
  164.    if(m_CapOCX.GetCaptureHotKey()!=0)
  165.       if (m_nCapture == nType)
  166.       {
  167.          return;
  168.       }
  169.  
  170.    m_nCapture = nType;
  171.     m_CapOCX.StopCapture();
  172.  
  173.    if(m_CapOCX.GetCaptureHotKey()!=0)
  174.    {
  175.       while (m_nCapture == nType)
  176.       {
  177.           nResult = m_CapOCX.CaptureFullScreen();
  178.          if (nResult != 0)
  179.          {
  180.             m_nCapture = SCRCAP_NONE;
  181.          }
  182.       }
  183.    }
  184.    else
  185.       nResult = m_CapOCX.CaptureFullScreen();
  186. }
  187.  
  188.  
  189. void CScrMain::OnCaptureActiveclient() 
  190. {
  191.    int nResult, nType=SCRCAP_ACTIVE_CLIENT;
  192.  
  193.    if(m_CapOCX.GetCaptureHotKey()!=0)
  194.       if (m_nCapture == nType)
  195.       {
  196.          return;
  197.       }
  198.  
  199.    m_nCapture = nType;
  200.     m_CapOCX.StopCapture();
  201.  
  202.    if(m_CapOCX.GetCaptureHotKey()!=0)
  203.    {
  204.       while (m_nCapture == nType)
  205.       {
  206.           nResult = m_CapOCX.CaptureActiveClient();
  207.          if (nResult != 0)
  208.          {
  209.             m_nCapture = SCRCAP_NONE;
  210.          }
  211.       }
  212.    }
  213.    else
  214.       nResult = m_CapOCX.CaptureActiveClient();
  215. }
  216.  
  217. void CScrMain::OnCaptureActivewindow() 
  218. {
  219.    int nResult, nType=SCRCAP_ACTIVE_WINDOW;
  220.  
  221.    if(m_CapOCX.GetCaptureHotKey()!=0)
  222.       if (m_nCapture == nType)
  223.       {
  224.          return;
  225.       }
  226.  
  227.    m_nCapture = nType;
  228.     m_CapOCX.StopCapture();
  229.  
  230.    if(m_CapOCX.GetCaptureHotKey()!=0)
  231.    {
  232.       while (m_nCapture == nType)
  233.       {
  234.           nResult = m_CapOCX.CaptureActiveWindow();
  235.          if (nResult != 0)
  236.          {
  237.             m_nCapture = SCRCAP_NONE;
  238.          }
  239.       }
  240.    }
  241.    else
  242.       nResult = m_CapOCX.CaptureActiveWindow();
  243. }
  244.  
  245. void CScrMain::OnOptionsArea() 
  246. {
  247.    m_nCapture = SCRCAP_NONE;
  248.     m_CapOCX.StopCapture();
  249.  
  250.    m_CapOCX.CaptureAreaOptionDlg ((short)m_hWnd);
  251. }
  252.  
  253. void CScrMain::OnCaptureFromexedlgtabbedview() 
  254. {
  255.    m_nCapture = SCRCAP_NONE;
  256.     m_CapOCX.StopCapture();
  257.  
  258.     m_CapOCX.CaptureEXEDlg ((short)m_hWnd, NULL, 0, SCR_CAP_EXEDLG_TABVIEW);
  259. }
  260.  
  261. void CScrMain::OnCaptureMenuundercursor() 
  262. {
  263.    int nResult, nType=SCRCAP_MENU_UNDERCURSOR;
  264.  
  265.    if(m_CapOCX.GetCaptureHotKey()!=0)
  266.       if (m_nCapture == nType)
  267.       {
  268.          return;
  269.       }
  270.  
  271.    m_nCapture = nType;
  272.     m_CapOCX.StopCapture();
  273.  
  274.    if(m_CapOCX.GetCaptureHotKey()!=0)
  275.    {
  276.       while (m_nCapture == nType)
  277.       {
  278.           nResult = m_CapOCX.CaptureMenuUnderCursor();
  279.          if (nResult != 0)
  280.          {
  281.             m_nCapture = SCRCAP_NONE;
  282.          }
  283.       }
  284.    }
  285.    else
  286.       nResult = m_CapOCX.CaptureMenuUnderCursor();
  287. }
  288.  
  289. void CScrMain::OnOptionsObject() 
  290. {
  291.    m_nCapture = SCRCAP_NONE;
  292.     m_CapOCX.StopCapture();
  293.  
  294.     m_CapOCX.CaptureObjectOptionDlg ((short)m_hWnd);
  295. }
  296.  
  297. void CScrMain::OnCaptureSelectedobject() 
  298. {
  299.    int nResult, nType=SCRCAP_SELECTED_OBJECT;
  300.  
  301.    if(m_CapOCX.GetCaptureHotKey()!=0)
  302.       if (m_nCapture == nType)
  303.       {
  304.          return;
  305.       }
  306.  
  307.    m_nCapture = nType;
  308.     m_CapOCX.StopCapture();
  309.  
  310.    if(m_CapOCX.GetCaptureHotKey()!=0)
  311.    {
  312.       while (m_nCapture == nType)
  313.       {
  314.           nResult = m_CapOCX.CaptureSelectedObject();
  315.          if (nResult != 0)
  316.          {
  317.             m_nCapture = SCRCAP_NONE;
  318.          }
  319.       }
  320.    }
  321.    else
  322.       nResult = m_CapOCX.CaptureSelectedObject();
  323. }
  324.  
  325. void CScrMain::OnCaptureSelectedarea() 
  326. {
  327.    int nResult, nType=SCRCAP_AREA_TRIANGLE;
  328.  
  329.    if(m_CapOCX.GetCaptureHotKey()!=0)
  330.       if (m_nCapture == nType)
  331.       {
  332.          return;
  333.       }
  334.  
  335.    m_nCapture = nType;
  336.     m_CapOCX.StopCapture();
  337.  
  338.    if(m_CapOCX.GetCaptureHotKey()!=0)
  339.    {
  340.       while (m_nCapture == nType)
  341.       {
  342.           nResult = m_CapOCX.CaptureArea(0);
  343.          if (nResult != 0)
  344.          {
  345.             m_nCapture = SCRCAP_NONE;
  346.          }
  347.       }
  348.    }
  349.    else
  350.       nResult = m_CapOCX.CaptureArea(0);
  351. }
  352.  
  353. void CScrMain::OnCaptureMousecursor() 
  354. {
  355.    int nResult, nType=SCRCAP_MOUSE_CURSOR;
  356.  
  357.    if(m_CapOCX.GetCaptureHotKey()!=0)
  358.       if (m_nCapture == nType)
  359.       {
  360.          return;
  361.       }
  362.  
  363.    m_nCapture = nType;
  364.     m_CapOCX.StopCapture();
  365.  
  366.    if(m_CapOCX.GetCaptureHotKey()!=0)
  367.    {
  368.       while (m_nCapture == nType)
  369.       {
  370.           nResult = m_CapOCX.CaptureMouseCursor();
  371.          if (nResult != 0)
  372.          {
  373.             m_nCapture = SCRCAP_NONE;
  374.          }
  375.       }
  376.    }
  377.    else
  378.       nResult = m_CapOCX.CaptureMouseCursor();
  379. }
  380.  
  381. void CScrMain::OnOptionsOptions() 
  382. {
  383.    m_nCapture = SCRCAP_NONE;
  384.     m_CapOCX.StopCapture();
  385.  
  386.     m_CapOCX.CaptureOptionDlg ((short)m_hWnd);
  387. }
  388.  
  389. void CScrMain::OnCaptureWallpaper() 
  390. {
  391.    int nResult, nType=SCRCAP_WALLPAPER;
  392.  
  393.    if(m_CapOCX.GetCaptureHotKey()!=0)
  394.       if (m_nCapture == nType)
  395.       {
  396.          return;
  397.       }
  398.  
  399.    m_nCapture = nType;
  400.     m_CapOCX.StopCapture();
  401.  
  402.    if(m_CapOCX.GetCaptureHotKey()!=0)
  403.    {
  404.       while (m_nCapture == nType)
  405.       {
  406.           nResult = m_CapOCX.CaptureWallPaper();
  407.          if (nResult != 0)
  408.          {
  409.             m_nCapture = SCRCAP_NONE;
  410.          }
  411.       }
  412.    }
  413.    else
  414.       nResult = m_CapOCX.CaptureWallPaper();
  415. }
  416.  
  417. void CScrMain::OnCaptureFromexedlgtree() 
  418. {
  419.    m_nCapture = SCRCAP_NONE;
  420.     m_CapOCX.StopCapture();
  421.  
  422.     m_CapOCX.CaptureEXEDlg ((short)m_hWnd, NULL, 0, SCR_CAP_EXEDLG_TREEVIEW);
  423. }
  424.  
  425. void CScrMain::OnCaptureWindowundercursor() 
  426. {
  427.    int nResult, nType=SCRCAP_WINDOW_UNDER_CURSOR;
  428.  
  429.    if(m_CapOCX.GetCaptureHotKey()!=0)
  430.       if (m_nCapture == nType)
  431.       {
  432.          return;
  433.       }
  434.  
  435.    m_nCapture = nType;
  436.     m_CapOCX.StopCapture();
  437.  
  438.    if(m_CapOCX.GetCaptureHotKey()!=0)
  439.    {
  440.       while (m_nCapture == nType)
  441.       {
  442.           nResult = m_CapOCX.CaptureWindowUnderCursor();
  443.          if (nResult != 0)
  444.          {
  445.             m_nCapture = SCRCAP_NONE;
  446.          }
  447.       }
  448.    }
  449.    else
  450.       nResult = m_CapOCX.CaptureWindowUnderCursor();
  451. }
  452.  
  453. void CScrMain::OnUpdateCaptureActiveclient(CCmdUI* pCmdUI) 
  454. {
  455.     pCmdUI->SetCheck(m_nCapture == SCRCAP_ACTIVE_CLIENT);
  456. }
  457.  
  458. void CScrMain::OnUpdateCaptureActivewindow(CCmdUI* pCmdUI) 
  459. {
  460.     pCmdUI->SetCheck(m_nCapture == SCRCAP_ACTIVE_WINDOW);
  461. }
  462.  
  463. void CScrMain::OnUpdateCaptureFromexedlgtabbedview(CCmdUI* pCmdUI) 
  464. {
  465.     pCmdUI->SetCheck(m_nCapture == SCRCAP_FROM_EXE);
  466. }
  467.  
  468. void CScrMain::OnUpdateCaptureFromexedlgtree(CCmdUI* pCmdUI) 
  469. {
  470.     pCmdUI->SetCheck(m_nCapture == SCRCAP_FROM_EXE);
  471. }
  472.  
  473. void CScrMain::OnUpdateCaptureFullscreen(CCmdUI* pCmdUI) 
  474. {
  475.     pCmdUI->SetCheck(m_nCapture == SCRCAP_FULL_SCREEN);
  476. }
  477.  
  478. void CScrMain::OnUpdateCaptureMenuundercursor(CCmdUI* pCmdUI) 
  479. {
  480.     pCmdUI->SetCheck(m_nCapture == SCRCAP_MENU_UNDERCURSOR);
  481. }
  482.  
  483. void CScrMain::OnUpdateCaptureMousecursor(CCmdUI* pCmdUI) 
  484. {
  485.     pCmdUI->SetCheck(m_nCapture == SCRCAP_MOUSE_CURSOR);
  486. }
  487.  
  488. void CScrMain::OnUpdateCaptureSelectedarea(CCmdUI* pCmdUI) 
  489. {
  490.     pCmdUI->SetCheck(m_nCapture == SCRCAP_AREA_TRIANGLE);
  491. }
  492.  
  493. void CScrMain::OnUpdateCaptureSelectedobject(CCmdUI* pCmdUI) 
  494. {
  495.     pCmdUI->SetCheck(m_nCapture == SCRCAP_SELECTED_OBJECT);
  496. }
  497.  
  498. void CScrMain::OnUpdateCaptureWallpaper(CCmdUI* pCmdUI) 
  499. {
  500.     pCmdUI->SetCheck(m_nCapture == SCRCAP_WALLPAPER);
  501. }
  502.  
  503. void CScrMain::OnUpdateCaptureWindowundercursor(CCmdUI* pCmdUI) 
  504. {
  505.     pCmdUI->SetCheck(m_nCapture == SCRCAP_WINDOW_UNDER_CURSOR);
  506. }
  507.