ACLIKDOC.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // AClikDoc.cpp : implementation of the CAutoClickDoc class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "AutoClik.h"
  14. #include "AClikDoc.h"
  15. #include "Dialogs.h"
  16. #ifdef _DEBUG
  17. #define new DEBUG_NEW
  18. #undef THIS_FILE
  19. static char THIS_FILE[] = __FILE__;
  20. #endif
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CAutoClickDoc
  23. IMPLEMENT_DYNCREATE(CAutoClickDoc, CDocument)
  24. BEGIN_MESSAGE_MAP(CAutoClickDoc, CDocument)
  25. //{{AFX_MSG_MAP(CAutoClickDoc)
  26. ON_COMMAND(ID_EDIT_CHANGETEXT, OnEditChangetext)
  27. //}}AFX_MSG_MAP
  28. END_MESSAGE_MAP()
  29. BEGIN_DISPATCH_MAP(CAutoClickDoc, CDocument)
  30. //{{AFX_DISPATCH_MAP(CAutoClickDoc)
  31. DISP_PROPERTY(CAutoClickDoc, "text", m_str, VT_BSTR)
  32. DISP_PROPERTY_EX(CAutoClickDoc, "x", GetX, SetX, VT_I2)
  33. DISP_PROPERTY_EX(CAutoClickDoc, "y", GetY, SetY, VT_I2)
  34. DISP_PROPERTY_EX(CAutoClickDoc, "Position", GetPosition, SetPosition, VT_DISPATCH)
  35. DISP_FUNCTION(CAutoClickDoc, "RefreshWindow", Refresh, VT_EMPTY, VTS_NONE)
  36. DISP_FUNCTION(CAutoClickDoc, "SetAllProps", SetAllProps, VT_EMPTY, VTS_I2 VTS_I2 VTS_BSTR)
  37. DISP_FUNCTION(CAutoClickDoc, "ShowWindow", ShowWindow, VT_EMPTY, VTS_NONE)
  38. //}}AFX_DISPATCH_MAP
  39. END_DISPATCH_MAP()
  40. // Note: we add support for IID_IAClick to support typesafe binding
  41. //  from VBA.  This IID must match the GUID that is attached to the
  42. //  dispinterface in the .ODL file.
  43. // {47D53E05-CC33-11CE-8F35-00DD01109044}
  44. static const IID IID_IAClick =
  45. { 0xfc866850, 0x9F96, 0x11ce, { 0xb0, 0xf2, 0x00, 0xaa, 0x00, 0x6c, 0x28, 0xb3 } };
  46. BEGIN_INTERFACE_MAP(CAutoClickDoc, CDocument)
  47. INTERFACE_PART(CAutoClickDoc, IID_IAClick, Dispatch)
  48. END_INTERFACE_MAP()
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CAutoClickDoc construction/destruction
  51. CAutoClickDoc::CAutoClickDoc()
  52. {
  53. EnableAutomation();
  54. m_pt = CPoint(10, 10);
  55. m_str = _T("Automation!");
  56. AfxOleLockApp();
  57. }
  58. CAutoClickDoc::~CAutoClickDoc()
  59. {
  60. AfxOleUnlockApp();
  61. }
  62. BOOL CAutoClickDoc::OnNewDocument()
  63. {
  64. if (!CDocument::OnNewDocument())
  65. return FALSE;
  66. // TODO: add reinitialization code here
  67. // (SDI documents will reuse this document)
  68. return TRUE;
  69. }
  70. void CAutoClickDoc::Refresh()
  71. {
  72. UpdateAllViews(NULL);
  73. SetModifiedFlag();
  74. }
  75. /////////////////////////////////////////////////////////////////////////////
  76. // CAutoClickDoc serialization
  77. void CAutoClickDoc::Serialize(CArchive& ar)
  78. {
  79. if (ar.IsStoring())
  80. {
  81. ar << m_pt << m_str;
  82. }
  83. else
  84. {
  85. ar >> m_pt >> m_str;
  86. }
  87. }
  88. /////////////////////////////////////////////////////////////////////////////
  89. // CAutoClickDoc diagnostics
  90. #ifdef _DEBUG
  91. void CAutoClickDoc::AssertValid() const
  92. {
  93. CDocument::AssertValid();
  94. }
  95. void CAutoClickDoc::Dump(CDumpContext& dc) const
  96. {
  97. CDocument::Dump(dc);
  98. }
  99. #endif //_DEBUG
  100. /////////////////////////////////////////////////////////////////////////////
  101. // CAutoClickDoc commands
  102. void CAutoClickDoc::OnEditChangetext()
  103. {
  104. CChangeText dlg;
  105. dlg.m_str = m_str;
  106. if (dlg.DoModal())
  107. {
  108. m_str = dlg.m_str;
  109. Refresh();
  110. }
  111. }
  112. short CAutoClickDoc::GetX()
  113. {
  114. return (short)m_pt.x;
  115. }
  116. void CAutoClickDoc::SetX(short nNewValue)
  117. {
  118. m_pt.x = nNewValue;
  119. Refresh();
  120. }
  121. short CAutoClickDoc::GetY()
  122. {
  123. return (short)m_pt.y;
  124. }
  125. void CAutoClickDoc::SetY(short nNewValue)
  126. {
  127. m_pt.y = nNewValue;
  128. Refresh();
  129. }
  130. void CAutoClickDoc::SetAllProps(short x, short y, LPCTSTR text)
  131. {
  132. m_pt.x = x;
  133. m_pt.y = y;
  134. m_str = text;
  135. Refresh();
  136. }
  137. void CAutoClickDoc::ShowWindow()
  138. {
  139. POSITION pos = GetFirstViewPosition();
  140. CView* pView = GetNextView(pos);
  141. if (pView != NULL)
  142. {
  143. CFrameWnd* pFrameWnd = pView->GetParentFrame();
  144. pFrameWnd->ActivateFrame(SW_SHOW);
  145. pFrameWnd = pFrameWnd->GetParentFrame();
  146. if (pFrameWnd != NULL)
  147. pFrameWnd->ActivateFrame(SW_SHOW);
  148. }
  149. }
  150. LPDISPATCH CAutoClickDoc::GetPosition()
  151. {
  152. // TODO: Add your property handler here
  153. return NULL;
  154. }
  155. void CAutoClickDoc::SetPosition(LPDISPATCH newValue)
  156. {
  157. // TODO: Add your property handler here
  158. }