ModalEdit.cpp
上传用户:yangzi5763
上传日期:2007-01-02
资源大小:239k
文件大小:2k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 11/11/98 5:08:12 AM
  5.   Comments: ModalEdit.cpp : implementation file
  6.  ************************************/
  7. #include "stdafx.h"
  8. #include "XPropertiesWnd.h"
  9. #include "ModalEdit.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CModalEdit
  17. // Function name : CModalEdit::CModalEdit
  18. // Description     : default constructor
  19. // Return type : 
  20. CModalEdit::CModalEdit()
  21. {
  22. m_bFirstDo = TRUE;
  23. }
  24. // Function name : CModalEdit::~CModalEdit
  25. // Description     : virtual destructor
  26. // Return type : 
  27. CModalEdit::~CModalEdit()
  28. {
  29. }
  30. BEGIN_MESSAGE_MAP(CModalEdit, CEdit)
  31. //{{AFX_MSG_MAP(CModalEdit)
  32. ON_WM_LBUTTONDOWN()
  33. ON_WM_KILLFOCUS()
  34. ON_WM_SETFOCUS()
  35. //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CModalEdit message handlers
  39. // Function name : CModalEdit::Do
  40. // Description     : Do a modal edit
  41. // Return type : void 
  42. // Argument         : CRect rect
  43. // Argument         : LPCTSTR lpszText
  44. void CModalEdit::Do(CRect rect, LPCTSTR lpszText)
  45. {
  46. m_bFirstDo = FALSE;
  47. MoveWindow(rect);
  48. SetWindowText(lpszText);
  49. ShowWindow(SW_SHOW);
  50. SetFocus();
  51. SetSel(0,-1);
  52. }
  53. // Function name : CModalEdit::OnLButtonDown
  54. // Description     : 
  55. // Return type : void 
  56. // Argument         : UINT nFlags
  57. // Argument         : CPoint point
  58. void CModalEdit::OnLButtonDown(UINT nFlags, CPoint point) 
  59. {
  60. CRect rect; GetWindowRect(rect);
  61. CPoint pointS(point); ClientToScreen(&pointS);
  62. if (!rect.PtInRect(pointS))
  63. End();
  64. CEdit::OnLButtonDown(nFlags, point);
  65. }
  66. // Function name : CModalEdit::OnKillFocus
  67. // Description     : 
  68. // Return type : void 
  69. // Argument         : CWnd* pNewWnd
  70. void CModalEdit::OnKillFocus(CWnd* pNewWnd) 
  71. {
  72. CEdit::OnKillFocus(pNewWnd);
  73. if (m_bFirstDo)
  74. End();
  75. else
  76. SetFocus();
  77. m_bFirstDo = TRUE;
  78. }
  79. // Function name : CModalEdit::End
  80. // Description     : 
  81. // Return type : void 
  82. void CModalEdit::End()
  83. {
  84. ReleaseCapture();
  85. ShowWindow(SW_HIDE);
  86. }
  87. // Function name : CModalEdit::OnSetFocus
  88. // Description     : 
  89. // Return type : void 
  90. // Argument         : CWnd* pOldWnd
  91. void CModalEdit::OnSetFocus(CWnd* pOldWnd) 
  92. {
  93. CEdit::OnSetFocus(pOldWnd);
  94. SetCapture();
  95. }