EditFrameWnd.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. // EditFrameWnd.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "CP_Main.h"
  5. #include "EditFrameWnd.h"
  6. #include ".\editframewnd.h"
  7. // CEditFrameWnd
  8. IMPLEMENT_DYNCREATE(CEditFrameWnd, CFrameWnd)
  9. CEditFrameWnd::CEditFrameWnd()
  10. {
  11. m_bAutoMenuEnable = FALSE;
  12. }
  13. CEditFrameWnd::~CEditFrameWnd()
  14. {
  15. }
  16. BEGIN_MESSAGE_MAP(CEditFrameWnd, CFrameWnd)
  17. ON_WM_CREATE()
  18. ON_WM_DESTROY()
  19. ON_WM_SIZE()
  20. ON_COMMAND(ID_BUTTON_SAVE, OnDummy)
  21. ON_COMMAND(ID_BUTTON_SAVE_ALL, OnDummy)
  22. ON_COMMAND(ID_BUTTON_CLOSE, OnDummy)
  23. ON_COMMAND(ID_BUTTON_NEW, OnDummy)
  24. ON_COMMAND(ID_BUTTON_SAVE_CLOSE_CLIPBOARD, OnDummy)
  25. ON_WM_SETFOCUS()
  26. ON_WM_CLOSE()
  27. ON_WM_NCCALCSIZE()
  28. ON_WM_NCPAINT()
  29. ON_WM_NCHITTEST()
  30. ON_WM_NCLBUTTONDOWN()
  31. ON_WM_NCLBUTTONUP()
  32. ON_WM_NCMOUSEMOVE()
  33. ON_WM_NCLBUTTONDBLCLK()
  34. END_MESSAGE_MAP()
  35. // CEditFrameWnd message handlers
  36. int CEditFrameWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
  37. {
  38. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  39. return -1;
  40. ModifyStyle(WS_CAPTION|WS_BORDER|WS_OVERLAPPED|0x0000C000|WS_THICKFRAME|WS_DLGFRAME|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, 0, SWP_DRAWFRAME);
  41. ModifyStyleEx(WS_EX_CLIENTEDGE, 0, 0);
  42. CString csTitle = theApp.m_Language.GetString("Ditto_Edit", "Ditto Edit");
  43. m_EditWnd.Create(NULL, csTitle, WS_CHILD, CRect(0, 0, 0, 0), this, 100, NULL);
  44. m_EditWnd.ShowWindow(SW_SHOW);
  45. MoveControls();
  46. m_DittoWindow.DoCreate(this);
  47. m_DittoWindow.m_bDrawChevron = false;
  48. m_DittoWindow.SetCaptionColors(g_Opt.m_Theme.CaptionLeft(), g_Opt.m_Theme.CaptionRight(), g_Opt.m_Theme.Border());
  49. m_DittoWindow.SetCaptionOn(this, CAPTION_TOP, true);
  50. m_crIcon.SetRect(-2, -15, 15, 0);
  51. SetWindowText(_T("Ditto Editor"));
  52. return 0;
  53. }
  54. void CEditFrameWnd::OnDestroy()
  55. {
  56. CFrameWnd::OnDestroy();
  57. CRect rect;
  58. GetWindowRect(&rect);
  59. CGetSetOptions::SetEditWndSize(rect.Size());
  60. CGetSetOptions::SetEditWndPoint(rect.TopLeft());
  61. ::SendMessage(m_hNotifyWnd, WM_EDIT_WND_CLOSING, 0, 0);
  62. }
  63. void CEditFrameWnd::OnSize(UINT nType, int cx, int cy)
  64. {
  65. CFrameWnd::OnSize(nType, cx, cy);
  66. m_DittoWindow.DoSetRegion(this);
  67. MoveControls();
  68. }
  69. void CEditFrameWnd::MoveControls()
  70. {
  71. if(::IsWindow(m_EditWnd.GetSafeHwnd()))
  72. {
  73. CRect cr;
  74. GetClientRect(cr);
  75. m_EditWnd.MoveWindow(cr);
  76. }
  77. }
  78. bool CEditFrameWnd::EditIds(CClipIDs &Ids)
  79. {
  80. return m_EditWnd.EditIds(Ids);
  81. }
  82. BOOL CEditFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
  83. {
  84. if(cs.hMenu!=NULL)
  85. {
  86. ::DestroyMenu(cs.hMenu); // delete menu if loaded
  87. cs.hMenu = NULL; // no menu for this window
  88. }
  89. WNDCLASS wc;
  90. wc.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
  91. wc.lpfnWndProc = AfxWndProc;
  92. wc.cbClsExtra = 0;
  93. wc.cbWndExtra = 0;
  94. wc.hInstance = AfxGetInstanceHandle();
  95. wc.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  96. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  97. wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  98. wc.lpszMenuName = NULL;
  99. wc.lpszClassName = _T("Ditto Edit Wnd");
  100. // Create the QPaste window class
  101. if (!AfxRegisterClass(&wc))
  102. return FALSE;
  103. cs.lpszClass = wc.lpszClassName;
  104. return CFrameWnd::PreCreateWindow(cs);
  105. }
  106. void CEditFrameWnd::OnDummy()
  107. {
  108. }
  109. void CEditFrameWnd::OnSetFocus(CWnd* pOldWnd)
  110. {
  111. CFrameWnd::OnSetFocus(pOldWnd);
  112. m_EditWnd.SetFocus();
  113. }
  114. void CEditFrameWnd::OnClose()
  115. {
  116. if(m_EditWnd.CloseEdits(true) == false)
  117. return;
  118. CFrameWnd::OnClose();
  119. }
  120. void CEditFrameWnd::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp)
  121. {
  122. CWnd::OnNcCalcSize(bCalcValidRects, lpncsp);
  123. m_DittoWindow.DoNcCalcSize(bCalcValidRects, lpncsp);
  124. }
  125. void CEditFrameWnd::OnNcPaint()
  126. {
  127. m_DittoWindow.DoNcPaint(this);
  128. }
  129. HITTEST_RET CEditFrameWnd::OnNcHitTest(CPoint point)
  130. {
  131. UINT Ret = m_DittoWindow.DoNcHitTest(this, point);
  132. if(Ret == -1)
  133. return CWnd::OnNcHitTest(point);
  134. return Ret;
  135. }
  136. void CEditFrameWnd::OnNcLButtonDown(UINT nHitTest, CPoint point)
  137. {
  138. m_DittoWindow.DoNcLButtonDown(this, nHitTest, point);
  139. CFrameWnd::OnNcLButtonDown(nHitTest, point);
  140. }
  141. void CEditFrameWnd::OnNcLButtonUp(UINT nHitTest, CPoint point)
  142. {
  143. if(m_DittoWindow.DoNcLButtonUp(this, nHitTest, point) > 0)
  144. return;
  145. CFrameWnd::OnNcLButtonUp(nHitTest, point);
  146. }
  147. void CEditFrameWnd::OnNcMouseMove(UINT nHitTest, CPoint point)
  148. {
  149. m_DittoWindow.DoNcMouseMove(this, nHitTest, point);
  150. CFrameWnd::OnNcMouseMove(nHitTest, point);
  151. }
  152. BOOL CEditFrameWnd::PreTranslateMessage(MSG* pMsg)
  153. {
  154. m_DittoWindow.DoPreTranslateMessage(pMsg);
  155. return CFrameWnd::PreTranslateMessage(pMsg);
  156. }
  157. bool CEditFrameWnd::CloseAll()
  158. {
  159. return m_EditWnd.CloseEdits(true);
  160. }
  161. void CEditFrameWnd::OnNcLButtonDblClk(UINT nHitTest, CPoint point)
  162. {
  163. CPoint pt(point);
  164. ScreenToClient(&pt);
  165. if(m_crIcon.PtInRect(pt))
  166. {
  167. CloseAll();
  168. OnClose();
  169. return;
  170. }
  171. CFrameWnd::OnNcLButtonDblClk(nHitTest, point);
  172. }