EditExt.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // EditExt.cpp: implementation of the CEditExt class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "EditExt.h"
  6. #include "library.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. WNDPROC CEditExt::m_cWndProc = NULL;
  13. //////////////////////////////////////////////////////////////////////
  14. // Construction/Destruction
  15. //////////////////////////////////////////////////////////////////////
  16. LRESULT CEditExt::DefWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
  17. {
  18. CWnd *pWnd = NULL;
  19. CPoint point;
  20. LRESULT lReturn;
  21. pWnd = CWnd::FromHandle( hWnd );
  22. switch( message )
  23. {
  24. case WM_PAINT:
  25. case WM_NCPAINT:
  26. lReturn=CallWindowProc( m_cWndProc, hWnd, message, wParam, lParam );
  27. OnPaint( pWnd );
  28. return lReturn;
  29. default:
  30. break;
  31. }
  32. return CallWindowProc( m_cWndProc, hWnd, message, wParam, lParam );
  33. }
  34. void CEditExt::OnPaint( CWnd *pWnd )
  35. {
  36. CDC* pDC = pWnd->GetDC();
  37. CRect m_rcDropDown;
  38. RECT Rect;
  39. MEMDCXP Mdcxp;
  40. HANDLE hHandle;
  41. // 获取窗口大小
  42. GetWindowRect(pWnd->GetSafeHwnd (), &Rect);
  43. Rect.right -= Rect.left;
  44. Rect.bottom -= Rect.top;
  45. Rect.top = Rect.left = 0;
  46. // 获取内存兼容设备场景
  47. Mdcxp.hWnd = pWnd->GetSafeHwnd ();
  48. Mdcxp.bTransfer = TRUE;
  49. Mdcxp.hBitmap = NULL;
  50. GetMemDCXP(&Mdcxp);
  51. // 绘制外框
  52. FrameRect(Mdcxp.hMemDC, &Rect, (HBRUSH) g_frameedgebrush);
  53. // 绘制内框
  54. InflateRect(&Rect, -1, -1);
  55. hHandle = (HANDLE) ::GetStockObject (WHITE_BRUSH);
  56. FrameRect(Mdcxp.hMemDC, &Rect, (HBRUSH) hHandle);
  57. /* InflateRect(&Rect, -1, -1);
  58. Rect.left = Rect.right - GetSystemMetrics(SM_CYVTHUMB);
  59. FrameRect(Mdcxp.hMemDC, &Rect, (HBRUSH) hHandle);
  60. Rect.left++;*/
  61. // 还原并释放内存设备场景
  62. Mdcxp.bTransfer = TRUE;
  63. ReleaseMemDCXP(&Mdcxp);
  64. }