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

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 10/16/98 5:52:55 PM
  5.   Comments: DropEdit.cpp : implementation file
  6.  ************************************/
  7. #include "stdafx.h"
  8. #include "xpropertieswnd.h"
  9. #include "DropEdit.h"
  10. #include "ControlsWnd.h"
  11. #include "PageListCtrl.h"
  12. #ifdef _DEBUG
  13. #define new DEBUG_NEW
  14. #undef THIS_FILE
  15. static char THIS_FILE[] = __FILE__;
  16. #endif
  17. #define IDEDITBOX 1001
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CDropEdit
  20. // Function name : CDropEdit::CDropEdit
  21. // Description     : default Constuctor
  22. // Return type : 
  23. CDropEdit::CDropEdit():m_brush(RGB(255,255,255))
  24. {
  25. }
  26. // Function name : CDropEdit::~CDropEdit
  27. // Description     : virtual destructor
  28. // Return type : 
  29. CDropEdit::~CDropEdit()
  30. {
  31. }
  32. BEGIN_MESSAGE_MAP(CDropEdit, CEdit)
  33. //{{AFX_MSG_MAP(CDropEdit)
  34. ON_WM_KILLFOCUS()
  35. ON_WM_KEYDOWN()
  36. ON_WM_CTLCOLOR_REFLECT()
  37. //}}AFX_MSG_MAP
  38. END_MESSAGE_MAP()
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CDropEdit message handlers
  41. // Function name : CDropEdit::Create
  42. // Description     : Create this class 
  43. // Return type : CWnd* 
  44. // Argument         : CControlsWnd * pNotifyClass
  45. CWnd* CDropEdit::Create(CControlsWnd * pNotifyClass)
  46. {
  47. // Do not call this twice
  48. ASSERT (!::IsWindow(GetSafeHwnd()));
  49. if (CEdit::Create(WS_CHILD | ES_LEFT | ES_AUTOHSCROLL,CRect(0,0,0,0), pNotifyClass->GetWindowNotify(), IDEDITBOX))
  50. {
  51. SetFont(pNotifyClass->GetWindowNotify()->GetFont());
  52. m_pNotifyClass = pNotifyClass;
  53. return this;
  54. }
  55. return NULL;
  56. }
  57. // Function name : CDropEdit::Show
  58. // Description     : Show this class
  59. // Return type : void 
  60. // Argument         : CRect rect
  61. void CDropEdit::Show(CRect rect)
  62. {
  63. // You must call Create function before
  64. ASSERT(::IsWindow(GetSafeHwnd()));
  65. MoveWindow(rect);
  66. ShowWindow(SW_SHOW);
  67. SetFocus();
  68. CString text; GetWindowText(text);
  69. SetSel(text.GetLength(), -1);
  70. }
  71. // Function name : CDropEdit::OnKillFocus
  72. // Description     : Refresh value into m_pNotifyClass
  73. // Return type : void 
  74. // Argument         : CWnd* pNewWnd
  75. void CDropEdit::OnKillFocus(CWnd* pNewWnd) 
  76. {
  77. CEdit::OnKillFocus(pNewWnd);
  78. CString text; GetWindowText(text);
  79. m_pNotifyClass->OnSelectItem(text, 0);
  80. ShowWindow(SW_HIDE);
  81. }
  82. // Function name : CDropEdit::OnKeyDown
  83. // Description     : If user press wnetr key
  84. // Return type : void 
  85. // Argument         : UINT nChar
  86. // Argument         : UINT nRepCnt
  87. // Argument         : UINT nFlags
  88. void CDropEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
  89. {
  90. CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
  91. //Put focus on CPageListCtrl..
  92. if (nChar == VK_RETURN)
  93. m_pNotifyClass->GetWindowNotify()->SetFocus();
  94. }
  95. // Function name : CDropEdit::CtlColor
  96. // Description     : Controls the window color of an edit.
  97. // Return type : HBRUSH 
  98. // Argument         : CDC* pDC
  99. // Argument         : UINT nCtlColor
  100. HBRUSH CDropEdit::CtlColor(CDC* pDC, UINT nCtlColor) 
  101. {
  102. pDC->SetTextColor(m_rgbEditColor);
  103. return (HBRUSH)m_brush;
  104. }
  105. // Function name : CDropEdit::SetEditColor
  106. // Description     : Set the color for edit 
  107. // Return type : void 
  108. // Argument         : COLORREF rgbEditColor
  109. void CDropEdit::SetEditColor(COLORREF rgbEditColor)
  110. {
  111. m_rgbEditColor = rgbEditColor;
  112. }