XTPSyntaxEditCtrl.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:138k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. //      flags : [in] Can have one of the following values:
  2. //                      [ul]
  3. //                      [li]SW_ERASE   When specified with SW_INVALIDATE,
  4. //                      erases the newly invalidated region by sending
  5. //                      a WM_ERASEBKGND message to the window. [/li]
  6. //                      [li]SW_INVALIDATE Invalidates the region identified
  7. //                                      by prgnUpdate after scrolling.[/li]
  8. //                      [li]SW_SCROLLCHILDREN Scrolls all child windows that
  9. //                      intersect the rectangle pointed to by lpRectScroll
  10. //                      by the number of pixels specified in dx and dy.
  11. //                      Windows sends a WM_MOVE message to all child windows
  12. //                      that intersect lpRectScroll, even if they do not move.
  13. //                      The caret is repositioned when a child window is
  14. //                      scrolled and the cursor rectangle intersects the
  15. //                      scroll rectangle.[/li]
  16. //                      [/ul]
  17. //-----------------------------------------------------------------------
  18. int ScrollWindowEx( int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags );
  19. //-----------------------------------------------------------------------
  20. // Summary:
  21. //      Scrolls the specified client area.
  22. // Parameters:
  23. //      xAmount : [in] Specifies the amount, in device units, of horizontal
  24. //                      scrolling. This parameter must be a negative value
  25. //                      to scroll to the left.
  26. //      yAmount : [in] Specifies the amount, in device units, of vertical
  27. //                      scrolling. This parameter must be a negative value
  28. //                      to scroll up.
  29. //      lpRect : [in]  Points to a CRect object or RECT structure that
  30. //                      specifies the portion of the client area to be scrolled.
  31. //                      If lpRect is NULL, the entire client area is scrolled.
  32. //                      The caret is repositioned if the cursor rectangle
  33. //                      intersects the scroll rectangle.
  34. //      lpClipRect : [in] Points to a CRect object or RECT structure that
  35. //                          specifies the clipping rectangle to scroll.
  36. //                          Only bits inside this rectangle are scrolled.
  37. //                          Bits outside this rectangle are not affected
  38. //                          even if they are in the lpRect rectangle.
  39. //                          If lpClipRect is NULL, no clipping is performed
  40. //                          on the scroll rectangle.
  41. //-----------------------------------------------------------------------
  42. void ScrollWindow( int xAmount, int yAmount, LPCRECT lpRect = NULL, LPCRECT lpClipRect = NULL );
  43. //-----------------------------------------------------------------------
  44. // Summary:
  45. //      Retrieves the scroll bar range.
  46. // Parameters:
  47. //      nBar : [in] Specifies the scroll bar to examine. The parameter can
  48. //                  take one of the following values:
  49. //                  [ul]
  50. //                  [li]SB_HORZ - Retrieves the position of the horizontal
  51. //                                  scroll bar.[/li]
  52. //                  [li]SB_VERT - Retrieves the position of the vertical
  53. //                                  scroll bar.[/li]
  54. //                  [/ul]
  55. //      lpMinPos : [out] Points to the integer variable that is to receive
  56. //                          the minimum position.
  57. //      lpMaxPos : [out] Points to the integer variable that is to receive
  58. //                          the maximum position.
  59. //-----------------------------------------------------------------------
  60. void GetScrollRange( int nBar, LPINT lpMinPos, LPINT lpMaxPos ) const;
  61. //-----------------------------------------------------------------------
  62. // Summary:
  63. //      Retrieves the position of the scroll box.
  64. // Parameters:
  65. //      nBar : [in] Specifies the scroll bar to examine. The parameter can
  66. //                  take one of the following values:
  67. //                  [ul]
  68. //                  [li]SB_HORZ - Retrieves the position of the horizontal
  69. //                                  scroll bar.[/li]
  70. //                  [li]SB_VERT - Retrieves the position of the vertical
  71. //                                  scroll bar.[/li]
  72. //                  [/ul]
  73. // Returns:
  74. //      The current position of the scroll box in the scroll bar if it is
  75. //      successful; otherwise, it is zero.
  76. //-----------------------------------------------------------------------
  77. int GetScrollPos(int nBar);
  78. //-----------------------------------------------------------------------
  79. // Summary:
  80. //      Scrolls the window along with the contents for the specified x and
  81. //      y number of columns and rows.
  82. // Parameters:
  83. //      x : [in] Scroll horizontally in characters.
  84. //      y : [in] Scroll vertically in rows.
  85. //-----------------------------------------------------------------------
  86. void Scroll(int x, int y);
  87. //-----------------------------------------------------------------------
  88. // Summary:
  89. //      Scrolls the window to a specific location where the specified row
  90. //      or col are visible.
  91. // Parameters:
  92. //      nTextRow : [in] Row for lookup in document coordinates.
  93. //      nDispRow : [in] Row for lookup in display coordinates.
  94. //      nDispCol : [in] Column for lookup in display coordinates.
  95. //-----------------------------------------------------------------------
  96. BOOL EnsureVisibleRow(int nTextRow);
  97. BOOL EnsureVisibleCol(int nDispRow, int nDispCol); //<COMBINE EnsureVisibleRow@int>
  98. //-----------------------------------------------------------------------
  99. // Summary:
  100. //      Creates the window
  101. // Parameters:
  102. //      pParent     : [in] Parent window (Must not be NULL)
  103. //      bHorzScroll : [in] TRUE if horizontal scroll bar is needed
  104. //      bVertScroll : [in] TRUE if vertical scroll bar is needed
  105. //      bSplit      : [in] TRUE if split bar is implemented
  106. //      pBuffer     : [in] A pointer to The buffer for the control (Used by splitter)
  107. //      lpCS        : [in] Specifies the create context of the window.
  108. //      nID         : [in] Specifies the control identifier.
  109. // Returns: TRUE if created, FALSE otherwise
  110. //-----------------------------------------------------------------------
  111. BOOL Create(CWnd *pParent, BOOL bHorzScroll, BOOL bVertScroll,
  112. CXTPSyntaxEditBufferManager *pBuffer = NULL,
  113. CCreateContext *lpCS = NULL, UINT nID = 0);
  114. //-----------------------------------------------------------------------
  115. // Summary:
  116. //      Sets Breakpoint shape at specified row.
  117. // Parameters:
  118. //      nRow : [in] A row identifier in document coordinates.
  119. //-----------------------------------------------------------------------
  120. void AddRemoveBreakPoint(int nRow);
  121. //-----------------------------------------------------------------------
  122. // Summary:
  123. //      Sets Bookmark shape at specified row.
  124. // Parameters:
  125. //      nRow : [in] A row identifier in document coordinates.
  126. //-----------------------------------------------------------------------
  127. void AddRemoveBookmark(int nRow);
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //      Expands/Collapses block at specified row.
  131. // Parameters:
  132. //      nRow : [in] A row identifier in document coordinates.
  133. //-----------------------------------------------------------------------
  134. void CollapseExpandBlock(int nRow);
  135. //-----------------------------------------------------------------------
  136. // Summary:
  137. //      Removes Breakpoint shape at specified row.
  138. // Parameters:
  139. //      nRow : [in] A row identifier in document coordinates.
  140. //-----------------------------------------------------------------------
  141. void DeleteBreakpoint(int nRow);
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //      Removes Breakpoint shape at specified row.
  145. // Parameters:
  146. //      nRow : [in] A row identifier in document coordinates.
  147. //-----------------------------------------------------------------------
  148. void DeleteBookmark(int nRow);
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //      Moves the current position to the previous bookmark.
  152. //-----------------------------------------------------------------------
  153. void PrevBookmark();
  154. //-----------------------------------------------------------------------
  155. // Summary:
  156. //      Moves the current position to the next bookmark.
  157. //-----------------------------------------------------------------------
  158. void NextBookmark();
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //      Determines if the current document has breakpoints.
  162. // Returns:
  163. //      TRUE if breakpoints were set; FALSE otherwise.
  164. //-----------------------------------------------------------------------
  165. BOOL HasBreakpoints();
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //      Determines if the current document has bookmarks.
  169. // Returns:
  170. //      TRUE if bookmarks were set; FALSE otherwise.
  171. //-----------------------------------------------------------------------
  172. BOOL HasBookmarks();
  173. //-----------------------------------------------------------------------
  174. // Summary:
  175. //      Retrieves a row mark for the specified row.
  176. // Parameters:
  177. //      nRow : [in] row identifier in document coordinates.
  178. //      lmType : [in]  type of line mark.
  179. //      pParam : [in]  a pointer to a parameter structure.
  180. // Returns:
  181. //      TRUE if specified row mark exists at the specified row, FALSE otherwise.
  182. // See also:
  183. //      XTP_EDIT_LINEMARKTYPE, XTP_EDIT_LMPARAM
  184. //-----------------------------------------------------------------------
  185. BOOL HasRowMark(int nRow, const XTP_EDIT_LINEMARKTYPE& lmType, XTP_EDIT_LMPARAM* pParam = NULL);
  186. //-----------------------------------------------------------------------
  187. // Summary:
  188. //      Collapses all expanded collapsible nodes.
  189. // See Also:
  190. //      void ExpandAll();
  191. //-----------------------------------------------------------------------
  192. void CollapseAll();
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //      Expands all collapsed nodes.
  196. // See Also:
  197. //      void CollapseAll();
  198. //-----------------------------------------------------------------------
  199. void ExpandAll();
  200. //-----------------------------------------------------------------------
  201. // Summary:
  202. //      Returns an array of available theme names from the configuration
  203. //      manager.
  204. // Returns:
  205. //      A reference to CStringArray object containing available theme names.
  206. //-----------------------------------------------------------------------
  207. CStringArray& GetThemes();
  208. //-----------------------------------------------------------------------
  209. // Summary:
  210. //      Applies the theme with the specified name onto the editor.
  211. // Parameters:
  212. //      strTheme : [in] theme name.
  213. //-----------------------------------------------------------------------
  214. void ApplyTheme(CString strTheme);
  215. //-----------------------------------------------------------------------
  216. // Summary:
  217. //      Returns current theme name.
  218. // Returns:
  219. //      A reference to CString object with active theme name.
  220. //-----------------------------------------------------------------------
  221. const CString& GetCurrentTheme();
  222. //-----------------------------------------------------------------------
  223. // Summary:
  224. //      Refreshes colors for the current document.
  225. // Remarks:
  226. //      Refreshing colors causes reread configuration files and reparsing
  227. //      the current document.
  228. //-----------------------------------------------------------------------
  229. virtual void RefreshColors();
  230. //-----------------------------------------------------------------------
  231. // Summary:
  232. //      Invalidates required row.
  233. // Parameters:
  234. //      nRow : [in] row identifier in document coordinates.
  235. //-----------------------------------------------------------------------
  236. void InvalidateRow(int nRow);
  237. //-----------------------------------------------------------------------
  238. // Summary:
  239. //      Invalidates given set of rows
  240. // Parameters:
  241. //      nRowFrom : [in] first row identifier in document coordinates.
  242. //      nRowTo : [in]   last row identifier in document coordinates.
  243. //-----------------------------------------------------------------------
  244. void InvalidateRows(int nRowFrom = -1, int nRowTo = -1);
  245. //-----------------------------------------------------------------------
  246. // Summary:
  247. //      Returns valid row flag.
  248. // Parameters:
  249. //      nDispRow : [in] row identifier in document coordinates.
  250. // Returns:
  251. //      TRUE if row valid; FALSE otherwise.
  252. // See also:
  253. //      void SetRowValid(int nDispRow);
  254. //-----------------------------------------------------------------------
  255. BOOL IsRowValid(int nDispRow);
  256. //-----------------------------------------------------------------------
  257. // Summary:
  258. //      Sets valid flag for the row.
  259. // Parameters:
  260. //      nDispRow : [in] row identifier in document coordinates.
  261. // See also:
  262. //      BOOL IsRowValid(int nDispRow);
  263. //-----------------------------------------------------------------------
  264. void SetRowValid(int nDispRow);
  265. //-----------------------------------------------------------------------
  266. // Summary:
  267. //    Call this member function to determine if the edit control has been activated
  268. //    or deactivated.
  269. // Returns:
  270. //    TRUE if the edit control has been activated, otherwise FALSE.
  271. //-----------------------------------------------------------------------
  272. virtual BOOL IsActive() const;
  273. //-----------------------------------------------------------------------
  274. // Summary:
  275. //     This member function is called the the edit control is being activated
  276. //     or deactivated.
  277. // Parameters:
  278. //     bIsActive - TRUE if the edit control has been activated, otherwise FALSE.
  279. //-----------------------------------------------------------------------
  280. virtual void SetActive(BOOL bIsActive);
  281. //-----------------------------------------------------------------------
  282. // Summary:
  283. //    Call this member function to determine if the edit control create and use
  284. //    scroll bars on parent window.
  285. // Returns:
  286. //    TRUE if parent window scroll bars are used, otherwise FALSE.
  287. //-----------------------------------------------------------------------
  288. virtual BOOL IsCreateScrollbarOnParent() const;
  289. //-----------------------------------------------------------------------
  290. // Summary:
  291. //    Call this member function to define where scrollbars are created -
  292. //    in SyntaxEdit control window or in parent window.
  293. // Parameters:
  294. //     nSet - TRUE if parent window scroll bars should be used, otherwise FALSE.
  295. //-----------------------------------------------------------------------
  296. virtual void SetCreateScrollbarOnParent(BOOL nSet);
  297. //-----------------------------------------------------------------------
  298. // Summary:
  299. //      Determines if a document can be modified by checking ReadOnly
  300. //      property value and sending XTP_EDIT_NM_EDITCHANGING notification
  301. //      to parent.
  302. // Returns:
  303. //      TRUE if the document can be edited, FALSE otherwise.
  304. //-----------------------------------------------------------------------
  305. virtual BOOL CanEditDoc();
  306. //-----------------------------------------------------------------------
  307. // Summary:
  308. //      Determines if editor in read-only mode.
  309. // Returns:
  310. //      TRUE if the editor in read-only mode, FALSE otherwise.
  311. //-----------------------------------------------------------------------
  312. virtual BOOL IsReadOnly();
  313. //-----------------------------------------------------------------------
  314. // Summary:
  315. //    Call this member function to set editor read-only mode.
  316. // Parameters:
  317. //    bReadOnly - Set as TRUE to switch editor in read-only mode, FALSE otherwise.
  318. //-----------------------------------------------------------------------
  319. virtual void SetReadOnly(BOOL bReadOnly = TRUE);
  320. //-----------------------------------------------------------------------
  321. // Summary:
  322. //     Determines if editor internally catch standard editor accelerators:
  323. //     Ctrl+C, Ctrl+V, Ctrl+X, Ctrl+Y, Ctrl+Z, Ctrl+Shift+Z, Ctrl+A,
  324. //     Ctrl+Ins, Shift+Ins, Alt+Backspace.
  325. // Remarks:
  326. //     You can support any of these editing operations externally, by call
  327. //     of member functions. By default this feature is off.
  328. // Returns:
  329. //     TRUE if accelerators internally supported, FALSE otherwise.
  330. //-----------------------------------------------------------------------
  331. BOOL IsEnabledEditAccelerators();
  332. //-----------------------------------------------------------------------
  333. // Summary:
  334. //    Call this member function to enable or disable standard editor accelerators
  335. //    processing. By default this feature is off.
  336. // Parameters:
  337. //    bEnable - Set as TRUE to enable accelerators, FALSE otherwise.
  338. //-----------------------------------------------------------------------
  339. void EnableEditAccelerators(BOOL bEnable);
  340. //{{AFX_CODEJOCK_PRIVATE
  341. public:
  342. virtual BOOL PreTranslateMessage(MSG* pMsg);
  343. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  344. virtual void PreSubclassWindow();
  345. virtual void OnFinalRelease();
  346. virtual BOOL _InitEditControl();
  347. virtual DWORD ProcessCollapsedRowsBeroreDraw(int nTextRow,
  348.  int& rnSkipRowsCount);
  349. virtual BOOL _IsVirtualSpaceActive() const;
  350. virtual void _EnsureVisible(int nTextRow, int nDispCol);
  351. virtual BOOL SetValueInt(LPCTSTR lpszValue, int nNewValue, int& nRefValue, BOOL bUpdateReg);
  352. virtual BOOL SetValueBool(LPCTSTR lpszValue, BOOL bNewValue, BOOL& bRefValue, BOOL bUpdateReg);
  353. protected:
  354. afx_msg void OnPaint();
  355. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  356. afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  357. afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  358. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  359. afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  360. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  361. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  362. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  363. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  364. afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
  365. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  366. afx_msg void OnDestroy();
  367. afx_msg void OnSize(UINT nType, int cx, int cy);
  368. afx_msg void OnSetFocus(CWnd* pOldWnd);
  369. afx_msg BOOL OnNcActivate(BOOL bActive);
  370. afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
  371. afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
  372. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  373. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  374. afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
  375. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  376. afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
  377. afx_msg void OnTimer(UINT_PTR nIDEvent);
  378. afx_msg void OnKillFocus(CWnd* pNewWnd);
  379. afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
  380. afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
  381. afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
  382. afx_msg LRESULT OnGetText(WPARAM wBufferSize, LPARAM lpBuffer);
  383. afx_msg LRESULT OnGetTextLen(WPARAM wParam, LPARAM lParam);
  384. afx_msg LRESULT OnGetFont(WPARAM wParam, LPARAM lParam);
  385. afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
  386. afx_msg LRESULT OnInputLanguage(WPARAM wParam, LPARAM lParam);
  387. afx_msg void OnDragCopy();
  388. afx_msg void OnDragMove();
  389. afx_msg UINT OnGetDlgCode();
  390. DECLARE_MESSAGE_MAP()
  391. //}}AFX_CODEJOCK_PRIVATE
  392. protected:
  393. /////////////////////////////////////////////////////////////////
  394. // Methods
  395. /////////////////////////////////////////////////////////////////
  396. //-----------------------------------------------------------------------
  397. // Summary:
  398. //      Calculates rect(s) for Collapsible node icon
  399. // Parameters:
  400. //      nDispRow    : [in] The window row number for which to print
  401. //      rcNode      : [out] Reference to CRect variable to receive node
  402. //                          icon rect
  403. //      prcNodeFull : [out] Pointer to CRect variable to receive full
  404. //                          node area rect
  405. //-----------------------------------------------------------------------
  406. void GetLineNodeRect(int nDispRow, CRect& rcNode, CRect* prcNodeFull = NULL);
  407. //-----------------------------------------------------------------------
  408. // Summary:
  409. //      Calculates the edit bar length and stores it into m_nEditbarLength
  410. //      member variable depending upon the gutter length and visibility and
  411. //      line number length and visibility.
  412. // Parameters:
  413. //      pDC : [in] A pointer to device context to draw.
  414. //-----------------------------------------------------------------------
  415. void CalculateEditbarLength(CDC* pDC= NULL);
  416. //-----------------------------------------------------------------------
  417. // Summary:
  418. //      Recalculates and set the scroll bars depending on the text size
  419. //      and current position.
  420. //-----------------------------------------------------------------------
  421. void _RecalcScrollBars();
  422. //-----------------------------------------------------------------------
  423. // Summary:
  424. //      Recalculates and set m_nHScrollMaxWidth member depending on the visible
  425. //      text size.
  426. //-----------------------------------------------------------------------
  427. void _RecalcHScrollMaxWidth();
  428. //-----------------------------------------------------------------------
  429. // Summary:
  430. //      This member function is called to update Is IME mode supported at
  431. //      the current time.
  432. //-----------------------------------------------------------------------
  433. void _UpdateIMEStatus();
  434. //-----------------------------------------------------------------------
  435. // Summary:
  436. //      Add number of tabs and spaces required to reach nDispColl.
  437. // Parameters:
  438. //      rstrTextToIns : [in out] Text to be inserted
  439. //      nDispColl     : [in] A display column number to reach to.
  440. //-----------------------------------------------------------------------
  441. void FillTabs(CString &rstrTextToIns, int nDispColl);
  442. //-----------------------------------------------------------------------
  443. // Summary:
  444. //      Fills and/or calculates number of tabs or blank spaces required.
  445. // Parameters:
  446. //      szText              : [in] Text to be inserted
  447. //      strTextToIns        : [out] Return string with all the indentation
  448. //      iNewRow             : [out] New row
  449. //      iNewCol             : [out] New col  (absolute)
  450. //      iNewDispCol         : [out] New display col
  451. //      iEditRowFrom        : [out] Start row for XTP_EDIT_NM_EDITCHANGED
  452. //      iEditRowTo          : [out] End row for XTP_EDIT_NM_EDITCHANGED
  453. //      iChainActionCount   : [out] Chain action count for undo
  454. //-----------------------------------------------------------------------
  455. BOOL CreateInsertText(LPTSTR szText, CString& strTextToIns,int& iNewRow,int& iNewCol,
  456.   int& iNewDispCol, int& iEditRowFrom, int& iEditRowTo,int& iChainActionCount);
  457. //-----------------------------------------------------------------------
  458. // Summary:
  459. //      Send XTP_EDIT_NM_EDITCHANGED notification with specified parameters.
  460. // Parameters:
  461. //      iRowFrom : [in] Start row identifier.
  462. //      iRowTo   : [in] End row identifier.
  463. //      nActions : [in] Action mask.
  464. //-----------------------------------------------------------------------
  465. void NotifyEditChanged(int iRowFrom, int iRowTo, UINT nActions);
  466. //-----------------------------------------------------------------------
  467. // Summary:
  468. //      Send any notification to parent.
  469. // Parameters:
  470. //      uCode : [in] The notification code to send.
  471. //-----------------------------------------------------------------------
  472. virtual LRESULT NotifyParent(UINT uCode);
  473. //-----------------------------------------------------------------------
  474. // Summary:
  475. //      Send any mouse notification to parent.
  476. // Parameters:
  477. //      uCode   : [in] A mouse event notify code (like XTP_EDIT_NM_LBUTTONDOWN or other).
  478. //      nFlags  : [in] A mouse event flags.
  479. //      point   : [in] A mouse event cursor position.
  480. // See Also:
  481. //      XTP_EDIT_NM_LBUTTONDOWN, XTP_EDIT_NM_LBUTTONDBLCLICK, XTP_EDIT_NM_LBUTTONUP,
  482. //      XTP_EDIT_NM_RBUTTONDOWN, XTP_EDIT_NM_RBUTTONUP, XTP_EDIT_NM_MOUSEMOVE.
  483. //-----------------------------------------------------------------------
  484. virtual LRESULT NotifyMouseEvent(UINT uCode, UINT nFlags, const CPoint& point);
  485. //-----------------------------------------------------------------------
  486. // Summary:
  487. //      Send any notification to parent that user click in the bookmark area.
  488. // Parameters:
  489. //      nRow     : [in] Document row.
  490. //      nDispRow : [in] Visible row.
  491. // Returns:
  492. //      TRUE if action was handled, FALSE otherwise.
  493. //-----------------------------------------------------------------------
  494. virtual BOOL NotifyMarginLBtnClick(int nRow, int nDispRow);
  495. //-----------------------------------------------------------------------
  496. // Summary:
  497. //      Initialize selection of all the sibling views.
  498. //-----------------------------------------------------------------------
  499. virtual void NotifySelInit();
  500. //-----------------------------------------------------------------------
  501. // Summary:
  502. //      Recalculates horizontal scroll bar
  503. //-----------------------------------------------------------------------
  504. void RecalcHorzScrollPos();
  505. //-----------------------------------------------------------------------
  506. // Summary:
  507. //      Recalculates vertical scroll bar
  508. //-----------------------------------------------------------------------
  509. void RecalcVertScrollPos();
  510. //-----------------------------------------------------------------------
  511. // Summary:
  512. //      Find the next(or previouse) word position depending on the
  513. //      parameter supplied.
  514. // Parameters:
  515. //      nFindWhat : [in] XTP_EDIT_FINDWORD_PREV to find previous and
  516. //                          XTP_EDIT_FINDWORD_NEXT to find next word.
  517. //      nTextRow     : [in] A text row number to start finding.
  518. //      nCol         : [in] A column number to start finding (1 based value).
  519. //      lcPos_str    : [in] A text position to start finding (column
  520. //                          is a 0 based value).
  521. //      rlcWordStart : [out] A reference to XTP_EDIT_LINECOL object
  522. //                           to receive word start position.
  523. //      rlcWordEnd   : [out] A reference to XTP_EDIT_LINECOL object
  524. //                           to receive word end position.
  525. //      rbOverSpace  : [out] A reference to BOOL variable to receive
  526. //                           if finding started from space or tab character.
  527. //-----------------------------------------------------------------------
  528. void FindWord(UINT nFindWhat);
  529. BOOL FindWordEx(UINT nFindWhat, int nTextRow, int nCol,
  530. XTP_EDIT_LINECOL& rlcWordStart, XTP_EDIT_LINECOL& rlcWordEnd,
  531. BOOL& rbOverSpace); //<COMBINE FindWord@UINT>
  532. BOOL FindWordEx_str(UINT nFindWhat, XTP_EDIT_LINECOL lcPos_str,
  533. XTP_EDIT_LINECOL& rlcWordStart, XTP_EDIT_LINECOL& rlcWordEnd,
  534. BOOL& rbOverSpace); //<COMBINE FindWord@UINT>
  535. //-----------------------------------------------------------------------
  536. // Summary:
  537. //      Try to match text on the supplied parameters.
  538. // Parameters:
  539. //      nRow            : [in] Row to match for.
  540. //      szLineText      : [in] Line text.
  541. //      szMatchText     : [in] Text to be matched.
  542. //      nStartPos       : [in] Start position.
  543. //      bMatchWholeWord : [in] Has to match whole word or not.
  544. //      bMatchCase      : [in] Case to be matched or not.
  545. //      bSearchForward  : [in] TRUE if it is to search forward.
  546. //      bRedraw         : [in] TRUE for redraw control after search.
  547. //-----------------------------------------------------------------------
  548. BOOL MatchText(int nRow, LPCTSTR szLineText, LPCTSTR szMatchText, int nStartPos,
  549.    BOOL bMatchWholeWord, BOOL bMatchCase, BOOL bSearchForward,
  550.    BOOL bRedraw = TRUE);
  551. //-----------------------------------------------------------------------
  552. // Summary:
  553. //      Returns the effective parent.
  554. // Returns:
  555. //      The parent window in form of CWnd*.
  556. //-----------------------------------------------------------------------
  557. CWnd* GetEffectiveParent() const;
  558. //-----------------------------------------------------------------------
  559. // Summary:
  560. //      Calculate and returns the display column for another display column
  561. //      specified in the iCol parameter.
  562. // Parameters:
  563. //      szText : [in] The text on which the calculation should be made.
  564. //      iCol   : [in] The display column for which calculation is needed.
  565. // Returns:
  566. //      The display column as integer value.
  567. //-----------------------------------------------------------------------
  568. int CalcValidDispCol(LPCTSTR szText, int iCol);
  569. //-----------------------------------------------------------------------
  570. // Summary:
  571. //      Returns the absolute column for a display column.
  572. // Parameters:
  573. //      szText   : [in] The text for which calculation is needed.
  574. //      nDispCol : [in] The valid display column.
  575. //      nTextRow : [in] The text row number.
  576. // Returns:
  577. //      The absolute column.
  578. //-----------------------------------------------------------------------
  579. int CalcAbsCol(LPCTSTR szText, int nDispCol);
  580. //-----------------------------------------------------------------------
  581. // Summary:
  582. //      Calculates and returns the display column for the specified
  583. //      absolute column.
  584. // Parameters:
  585. //      szText     : [in] The text for calculation.
  586. //      nActualCol : [in] The actual (absolute) column position.
  587. //      nTextRow   : [in] The text row number.
  588. // Returns:
  589. //      The calculated display column.
  590. //-----------------------------------------------------------------------
  591. int CalcDispCol(LPCTSTR szText, int nActualCol);
  592. public:
  593. int CalcAbsCol(int nTextRow, int nDispCol); //<COMBINE CalcAbsCol@LPCTSTR@int>
  594. int CalcDispCol(int nTextRow, int nActualCol); //<COMBINE CalcDispCol@LPCTSTR@int>
  595. //-----------------------------------------------------------------------
  596. // Summary:
  597. //      Returns a pointer to the line marks manager associated with the
  598. //      current text buffer.
  599. // Returns:
  600. //      Pointer to CXTPSyntaxEditLineMarksManager
  601. //-----------------------------------------------------------------------
  602. CXTPSyntaxEditLineMarksManager* GetLineMarksManager();
  603. //-----------------------------------------------------------------------
  604. // Summary:
  605. //      Use this member function to set new text value for specified row.
  606. // Parameters:
  607. //      nRow     : [in] The text row number.
  608. //      pcszText : [in] The row text new value.
  609. //      bCanUndo : [in] Pass TRUE if this can be undone.
  610. // Remarks:
  611. //      The parser is notified to reparse changed text.
  612. //-----------------------------------------------------------------------
  613. void SetRowText(int nRow, LPCTSTR pcszText, BOOL bCanUndo);
  614. //-----------------------------------------------------------------------
  615. // Summary:
  616. //      Use this member function to insert new row.
  617. // Parameters:
  618. //      nRow     : [in] The row number to insert at.
  619. //      pcszText : [in] The new row text.
  620. //      bCanUndo : [in] Pass TRUE if this can be undone.
  621. // Remarks:
  622. //      The parser is notified to reparse changed text.
  623. //-----------------------------------------------------------------------
  624. void InsertRow(int nRow, LPCTSTR pcszText, BOOL bCanUndo);
  625. //-----------------------------------------------------------------------
  626. // Summary:
  627. //      Use this member function to remove row.
  628. // Parameters:
  629. //      nRow     : [in] The row number to remove.
  630. //      bCanUndo : [in] Pass TRUE if this can be undone.
  631. // Remarks:
  632. //      The parser is notified to reparse changed text.
  633. //-----------------------------------------------------------------------
  634. void RemoveRow(int nRow, BOOL bCanUndo);
  635. //-----------------------------------------------------------------------
  636. // Summary:
  637. //      This member function is used to retrieve text colors for the
  638. //      specified row. It is called by the edit control from drawing procedure.
  639. // Parameters:
  640. //      nRow        : [in] The row number to retrieve text colors.
  641. //      nColFrom    : [in] The start column number (zero based).
  642. //      nColTo      : [in] The end column number (zero based). Value -1 means
  643. //                         line end.
  644. //      clrDefault  : [in] A const reference to structure which contains
  645. //                         default text colors. CXTPSyntaxEditPaintManager::m_clrValues
  646. //                         passed by default.
  647. //      rBlocks     : [out] A pointer to CXTPSyntaxEditTextBlockList object
  648. //                          to return text colors.
  649. // Remarks:
  650. //      The default implementation call CXTPSyntaxEditLexTextSchema::GetRowColors.
  651. //      You may override this method and create own fast implementation
  652. //      for the simple colors schemas.
  653. //-----------------------------------------------------------------------
  654. virtual void GetRowColors(int nTextRow, int nColFrom, int nColTo,
  655.   const XTP_EDIT_COLORVALUES& clrDefault,
  656.   CXTPSyntaxEditTextBlockList* rBlocks);
  657. //-----------------------------------------------------------------------
  658. // Summary:
  659. //      This member function is used to retrieve collapsable text blocks
  660. //      for the specified row. It is called by the edit control.
  661. // Parameters:
  662. //      nRow        : [in] The row number to retrieve text colors.
  663. //      rArBlocks   : [out] A reference to CXTPSyntaxEditRowsBlockArray object
  664. //                          to return collapsable text blocks.
  665. // Remarks:
  666. //      The default implementation call CXTPSyntaxEditLexTextSchema::GetCollapsableBlocksInfo.
  667. //      You may override this method and create own fast implementation.
  668. //-----------------------------------------------------------------------
  669. virtual void GetCollapsableBlocksInfo(int nTextRow,
  670.   CXTPSyntaxEditRowsBlockArray& rArBlocks);
  671. protected:
  672. //-----------------------------------------------------------------------
  673. // Summary:
  674. //      Expands the character set by putting space in the position of tab.
  675. // Parameters:
  676. //      pDC      : [in] A pointer to CDC object.
  677. //      pszChars : [in] The text to be processed.
  678. //      strBufer : [in] Buffer for text to be created after expansion.
  679. //      nCurPos  : [in] The current position in the line.
  680. // Returns:
  681. //      The length of processed text after expansion.
  682. //-----------------------------------------------------------------------
  683. int ExpandChars(CDC* pDC, LPCTSTR pszChars, int nCurPos, CString& strBufer);
  684. //-----------------------------------------------------------------------
  685. // Summary:
  686. //      Calculate collapsed text sign rect (like for [..])
  687. // Parameters:
  688. //      pDC         : [in] A pointer to CDC object.
  689. //      pCoDrawBlk  : [in] Pointer to XTP_EDIT_COLLAPSEDBLOCK structure.
  690. //      rcCoBlk     : [in, out] A reference to rectangle with collapced
  691. //                    block text area. The right border is updated by this function.
  692. // See also:
  693. //      struct XTP_EDIT_COLLAPSEDBLOCK
  694. //-----------------------------------------------------------------------
  695. void ProcessCollapsedText(CDC* pDC, XTP_EDIT_COLLAPSEDBLOCK* pCoDrawBlk, CRect& rcCoBlk);
  696. //-----------------------------------------------------------------------
  697. // Summary:
  698. //      The same functionality as for ProcessCollapsedText but performs some
  699. //      additional checks for input parameters.
  700. // Parameters:
  701. //      pDC         : [in] A pointer to CDC object.
  702. //      pCoDrawBlk  : [in] Pointer to XTP_EDIT_COLLAPSEDBLOCK structure.
  703. //      txtBlk      : [in] Pointer to XTP_EDIT_TEXTBLOCK structure.
  704. //      rcCoBlk     : [in, out] A reference to rectangle with collapced
  705. //                    block text area. The right border is updated by this function.
  706. // See also:
  707. //      struct XTP_EDIT_COLLAPSEDBLOCK, struct XTP_EDIT_TEXTBLOCK
  708. //-----------------------------------------------------------------------
  709. BOOL ProcessCollapsedTextEx(CDC* pDC, XTP_EDIT_COLLAPSEDBLOCK* pCoDrawBlk,
  710. const XTP_EDIT_TEXTBLOCK& txtBlk, CRect& rcCoBlk);
  711. //-----------------------------------------------------------------------
  712. // Summary:
  713. //      Returns a collapsed text for the specified collapsed block.
  714. // Parameters:
  715. //      pCoDrawBlk      : [in] XTP_EDIT_COLLAPSEDBLOCK structure.
  716. //      nMaxLinesCount  : [in] Max lines of text. Default is 150.
  717. // Returns:
  718. //      CString object with text for collapsed block.
  719. // See also:
  720. //      struct XTP_EDIT_COLLAPSEDBLOCK
  721. //-----------------------------------------------------------------------
  722. CString GetCollapsedText(XTP_EDIT_COLLAPSEDBLOCK* pCoDrawBlk, int nMaxLinesCount = 150);
  723. //-----------------------------------------------------------------------
  724. // Summary:
  725. //      Finds collapsed block on the specified point if exist.
  726. // Parameters:
  727. //      ptMouse : [in] Mouse coordinates where to check for collapsed block.
  728. // Returns:
  729. //      Pointer to the XTP_EDIT_COLLAPSEDBLOCK structure with collapsed block
  730. //      parameters if it found, NULL otherwise.
  731. // See also:
  732. //      struct XTP_EDIT_COLLAPSEDBLOCK.
  733. //-----------------------------------------------------------------------
  734. XTP_EDIT_COLLAPSEDBLOCK* GetBlockFromPt(const CPoint& ptMouse);
  735. //-----------------------------------------------------------------------
  736. // Summary:
  737. //      Shows tool tip with the text of the collapsed block on the specified
  738. //      point.
  739. // Parameters:
  740. //      ptMouse : [in] Mouse coordinates where to check for tooltip.
  741. // See also:
  742. //      CXTPSyntaxEditToolTipCtrl, m_wndToolTip
  743. //-----------------------------------------------------------------------
  744. void ShowCollapsedToolTip(const CPoint& ptMouse);
  745. //-----------------------------------------------------------------------
  746. // Summary:
  747. //      Expand collapsed block if double clicked on it.
  748. // Parameters:
  749. //      ptMouse : [in] Mouse coordinates where to check for collapsed block.
  750. // Returns:
  751. //      A number of row where collapsed block was expanded, 0 if collapsed
  752. //      block was not expanded.
  753. // See also:
  754. //      CXTPSyntaxEditToolTipCtrl
  755. //-----------------------------------------------------------------------
  756. int ProcessCollapsedBlockDblClick(const CPoint& ptMouse);
  757. //-----------------------------------------------------------------------
  758. // Summary:
  759. //      Updates the sibling views while in split mode.
  760. // Parameters:
  761. //      dwUpdate : [in] Specifies the view update flags.
  762. //-----------------------------------------------------------------------
  763. void UpdateScrollPos(DWORD dwUpdate = XTP_EDIT_UPDATE_ALL);
  764. //-----------------------------------------------------------------------
  765. // Summary:
  766. //      Sets or clears the modification flag for the currently opened
  767. //      document.
  768. // Parameters:
  769. //      bModified : [in] TRUE if want to set the document modified.
  770. //                          Default is TRUE.
  771. //-----------------------------------------------------------------------
  772. void SetDocModified(BOOL bModified = TRUE);
  773. //-----------------------------------------------------------------------
  774. // Summary:
  775. //      Calculates the maximum width for a text.
  776. // Parameters:
  777. //      szText : [in] The text for calculation.
  778. // Returns:
  779. //      The maximum width.
  780. //-----------------------------------------------------------------------
  781. int CalcMaximumWidth(LPCTSTR szText);
  782. //-----------------------------------------------------------------------
  783. // Summary:
  784. //      Returns a filename of the default ini configuration file.
  785. // Returns:
  786. //      CString objects with filename.
  787. //-----------------------------------------------------------------------
  788. CString GetDefaultCfgFilePath();
  789. //-----------------------------------------------------------------------
  790. // Summary:
  791. //      Internal editing event handler.
  792. // Parameters:
  793. //      nRow : [in] Row identifier.
  794. //      nCol : [in] Column identifier.
  795. //-----------------------------------------------------------------------
  796. void OnBeforeEditChanged(int nRow, int nCol);
  797. //-----------------------------------------------------------------------
  798. // Summary:
  799. //      Internal editing event handler.
  800. // Parameters:
  801. //      nRowFrom    : [in] Start row identifier.
  802. //      nColFrom    : [in] Start column identifier.
  803. //      nRowTo      : [in] End row identifier.
  804. //      nColTo      : [in] End column identifier.
  805. //      eEditAction : [in] Action identifier.
  806. //-----------------------------------------------------------------------
  807. void OnEditChanged(int nRowFrom, int nColFrom, int nRowTo, int nColTo, int eEditAction);
  808. //-----------------------------------------------------------------------
  809. // Summary:
  810. //      Internal editing event handler.
  811. // Parameters:
  812. //      LCFrom  : [in] Start coordinates.
  813. //      LCTo    : [in] End coordinates.
  814. //      eEditAction : [in] Action identifier.
  815. // See also:
  816. //      struct XTP_EDIT_LINECOL
  817. //-----------------------------------------------------------------------
  818. void OnEditChanged(const XTP_EDIT_LINECOL& LCFrom, const XTP_EDIT_LINECOL& LCTo, int eEditAction);
  819. //-----------------------------------------------------------------------
  820. // Summary:
  821. //      Internal editing event handler.
  822. // Parameters:
  823. //      code        : [in] Event code.
  824. //      wParam      : [in] Event parameter 1.
  825. //      lParam      : [in] Event parameter 2.
  826. // See also:
  827. //      XTP_NOTIFY_CODE
  828. //-----------------------------------------------------------------------
  829. void OnParseEvent(XTP_NOTIFY_CODE code, WPARAM wParam, LPARAM lParam);
  830. //-----------------------------------------------------------------------
  831. // Summary:
  832. //     Send WM_NOTIFY with XTP_EDIT_NM_PARSEEVENT code to parent window.
  833. // Parameters:
  834. //      code        : [in] Event code from XTPSyntaxEditOnParseEvent enum.
  835. //      wParam      : [in] Event parameter 1.
  836. //      lParam      : [in] Event parameter 2.
  837. // See Also:
  838. //      XTPSyntaxEditOnParseEvent
  839. //-----------------------------------------------------------------------
  840. BOOL NotifyParseEvent(XTP_NOTIFY_CODE code, WPARAM wParam, LPARAM lParam);
  841. //-----------------------------------------------------------------------
  842. // Summary:
  843. //      Internal editing event handler.
  844. // Parameters:
  845. //      code        : [in] Event code from XTPSyntaxEditOnCfgChangedEvent enum.
  846. //      wParam      : [in] Event parameter 1.
  847. //      lParam      : [in] Event parameter 2.
  848. // See also:
  849. //      XTPSyntaxEditOnCfgChangedEvent
  850. //-----------------------------------------------------------------------
  851. void OnLexCfgWasChanged(XTP_NOTIFY_CODE code, WPARAM wParam, LPARAM lParam);
  852. //-----------------------------------------------------------------------
  853. // Summary:
  854. //      Returns current document row number.
  855. // Returns:
  856. //      Current document row integer value.
  857. // See also:
  858. //      void SetCurrentDocumentRow(int nRow);
  859. //-----------------------------------------------------------------------
  860. int GetCurrentDocumentRow() const;
  861. //-----------------------------------------------------------------------
  862. // Summary:
  863. //      Set row number as current document row.
  864. // Parameters:
  865. //      nRow : [in] row number.
  866. // See also:
  867. //      int GetCurrentDocumentRow();
  868. //-----------------------------------------------------------------------
  869. void SetCurrentDocumentRow(int nRow);
  870. //-----------------------------------------------------------------------
  871. // Summary:
  872. //      Returns current visible row number.
  873. // Returns:
  874. //      Integer value of current visible row.
  875. //-----------------------------------------------------------------------
  876. int GetCurrentVisibleRow();
  877. //-----------------------------------------------------------------------
  878. // Summary:
  879. //      Calculates document row basing in visible row.
  880. // Parameters:
  881. //      nVisibleRow : [in] Visible row.
  882. // Returns:
  883. //      Integer value of document row.
  884. // See also:
  885. //  int GetCurrentVisibleRow();
  886. //-----------------------------------------------------------------------
  887. int GetDocumentRow(int nVisibleRow);
  888. //-----------------------------------------------------------------------
  889. // Summary:
  890. //      Calculates document row basing in global visible row.
  891. // Parameters:
  892. //      nStartDocumentRow : [in] Start document row.
  893. //      nRowDelta         : [in] Visible rows count.
  894. // Returns:
  895. //      Integer value of document row.
  896. //-----------------------------------------------------------------------
  897. int CalculateDocumentRow(int nStartDocumentRow, int nRowDelta);
  898. //-----------------------------------------------------------------------
  899. // Summary:
  900. //      Calculates visible row basing in document row.
  901. // Parameters:
  902. //      nDocumentRow : [in] Document row.
  903. // Returns:
  904. //      Integer value of visible row.
  905. //-----------------------------------------------------------------------
  906. int GetVisibleRow(int nDocumentRow);
  907. //-----------------------------------------------------------------------
  908. // Summary:
  909. //      Calculates global visible row basing in document row.
  910. // Parameters:
  911. //      nStartDocumentRow : [in] Start row.
  912. //      nDocumentRow      : [in] Count of document rows.
  913. // Returns:
  914. //      Integer value of global visible row.
  915. //-----------------------------------------------------------------------
  916. int CalculateVisibleRow(int nStartDocumentRow, int nDocumentRow);
  917. //-----------------------------------------------------------------------
  918. // Summary:
  919. //      Returns maximum visible rows count.
  920. // Parameters:
  921. //      nMaxDocRow : [in] Max document row up to which calculate visible
  922. //                          rows. If you pass -1 then calculate up to the
  923. //                          end of the document. -1 is default value.
  924. // Returns:
  925. //      Integer value of maximum visible rows count.
  926. //-----------------------------------------------------------------------
  927. int GetVisibleRowsCount(int nMaxDocRow = -1);
  928. //-----------------------------------------------------------------------
  929. // Summary:
  930. //      Moves current row up on a number of rows.
  931. // Parameters:
  932. //      nCount : [in] Count of rows.
  933. // Returns:
  934. //      Integer value of current visible row.
  935. //-----------------------------------------------------------------------
  936. int MoveCurrentVisibleRowUp(int nCount);
  937. //-----------------------------------------------------------------------
  938. // Summary:
  939. //      Moves current row down on a number of rows.
  940. // Parameters:
  941. //      nCount : [in] Count of rows.
  942. // Returns:
  943. //      Integer value of current visible row.
  944. //-----------------------------------------------------------------------
  945. int MoveCurrentVisibleRowDown(int nCount);
  946. //-----------------------------------------------------------------------
  947. // Summary:
  948. //      Shifts current row up on a number of rows.
  949. // Parameters:
  950. //      nCount : [in] Count of rows.
  951. //      bChangeCaret : [in] Caret movement flag, default is FALSE.
  952. // Returns:
  953. //      TRUE if screen is changed; FALSE otherwise.
  954. //-----------------------------------------------------------------------
  955. BOOL ShiftCurrentVisibleRowUp(int nCount, BOOL bChangeCaret = FALSE);
  956. //-----------------------------------------------------------------------
  957. // Summary:
  958. //      Shifts current row down on a number of rows.
  959. // Parameters:
  960. //      nCount : [in] Count of rows.
  961. //      bChangeCaret : [in] Caret movement flag, default is FALSE.
  962. // Returns:
  963. //      TRUE if screen is changed; FALSE otherwise.
  964. //-----------------------------------------------------------------------
  965. BOOL ShiftCurrentVisibleRowDown(int nCount, BOOL bChangeCaret = FALSE);
  966. //-----------------------------------------------------------------------
  967. // Summary:
  968. //      Gets length of collapsed block.
  969. // Parameters:
  970. //      nStartRow : [in] Start row of collapsed block.
  971. //      rnLen     : [out] Reference to store length value.
  972. // Returns:
  973. //      TRUE if success; FALSE otherwise.
  974. //-----------------------------------------------------------------------
  975. BOOL GetCollapsedBlockLen(int nStartRow, int& rnLen);
  976. //-----------------------------------------------------------------------
  977. // Summary:
  978. //      Gets the type of row node.
  979. // Parameters:
  980. //      nRow    : [in] Row identifier.
  981. //      dwType  : [out] Reference to store row node type.
  982. // Returns:
  983. //      TRUE if success; FALSE otherwise.
  984. //-----------------------------------------------------------------------
  985. BOOL GetRowNodes(int nRow, DWORD& dwType);
  986. //-----------------------------------------------------------------------
  987. // Summary:
  988. //      Returns a text for the specified line.
  989. // Parameters:
  990. //      nRow    : [in] Row identifier.
  991. //      bAddCRLF : [in] Boolean flag how to process end of text lines.
  992. //                      Default is FALSE.
  993. //      iCRLFStyle : [in] Style of end of text lines. Default is -1.
  994. // Returns:
  995. //      Reference to CString with text.
  996. // See Also: CXTPSyntaxEditBufferManager::GetLineText
  997. //-----------------------------------------------------------------------
  998. const CString& GetLineText(int nRow, BOOL bAddCRLF = FALSE, int iCRLFStyle = -1);
  999. //-----------------------------------------------------------------------
  1000. // Summary:
  1001. //      Gets a text for the specified line.
  1002. // Parameters:
  1003. //      nRow    : [in] Row identifier.
  1004. //      strBuffer : [out] Reference to text buffer to put returned text.
  1005. //      bAddCRLF : [in] Boolean flag how to process end of text lines.
  1006. //                      Default is FALSE.
  1007. //      iCRLFStyle : [in] Style of end of text lines. Default is -1.
  1008. // See Also: CXTPSyntaxEditBufferManager::GetLineText
  1009. //-----------------------------------------------------------------------
  1010. void GetLineText(int nRow, CString& strBuffer, BOOL bAddCRLF = FALSE, int iCRLFStyle = -1);
  1011. //-----------------------------------------------------------------------
  1012. // Summary:
  1013. //      Loads data into auto complete list.
  1014. //-----------------------------------------------------------------------
  1015. virtual void SetAutoCompleteList();
  1016. //-----------------------------------------------------------------------
  1017. // Summary:
  1018. //      Refreshes line marks depending on change type.
  1019. // Parameters:
  1020. //      pEditChanged : [in] Pointer to XTP_EDIT_NMHDR_EDITCHANGED structure.
  1021. // See also:
  1022. //      LPXTP_EDIT_NMHDR_EDITCHANGED
  1023. //-----------------------------------------------------------------------
  1024. virtual void RefreshLineMarks(XTP_EDIT_NMHDR_EDITCHANGED* pEditChanged);
  1025. //-----------------------------------------------------------------------
  1026. // Summary:
  1027. //      Redraws line marks.
  1028. //-----------------------------------------------------------------------
  1029. virtual void RedrawLineMarks();
  1030. //-----------------------------------------------------------------------
  1031. // Summary:
  1032. //      Performs Undo/Redo operations and common control properties
  1033. //      adjustment.
  1034. // Parameters:
  1035. //      nActionsCount : [in] A number of actions to undo/redo.
  1036. //      bUndoRedo : [in] TRUE for performing Undo operations, FALSE for
  1037. //                      performing Redo operations.
  1038. // Returns:
  1039. //      TRUE if success, FALSE otherwise.
  1040. //-----------------------------------------------------------------------
  1041. BOOL DoUndoRedo(int nActionsCount, BOOL bUndoRedo);
  1042. //-----------------------------------------------------------------------
  1043. // Summary:
  1044. //      Changes the case of the selection.
  1045. // Parameters:
  1046. //      bUpper : [in] TRUE when changing selection case to Upper,
  1047. //               FALSE when changing selection case to Lower.
  1048. // Returns:
  1049. //     TRUE if performs successfully, FALSE otherwise.
  1050. //-----------------------------------------------------------------------
  1051. BOOL DoChangeSelectionCase(BOOL bUpper);
  1052. //-----------------------------------------------------------------------
  1053. // Summary:
  1054. //      Changes the tabification of the selection.
  1055. // Parameters:
  1056. //      bTabify : [in] TRUE when changing spaces to tabs,
  1057. //               FALSE when changing tabs to spaces.
  1058. // Returns:
  1059. //     TRUE if performs successfully, FALSE otherwise.
  1060. //-----------------------------------------------------------------------
  1061. BOOL DoChangeSelectionTabify(BOOL bTabify);
  1062. //-----------------------------------------------------------------------
  1063. // Summary:
  1064. //      Use this method to read options from the registry.
  1065. // Returns:
  1066. //      TRUE if performs successfully, FALSE otherwise.
  1067. //-----------------------------------------------------------------------
  1068. BOOL GetRegValues();
  1069. //-----------------------------------------------------------------------
  1070. // Summary:
  1071. //      Use this method to internally update drawing information (like
  1072. //      each character position) in the draw text processor.
  1073. // Remarks:
  1074. //      It just draw specified row on the memory device context.
  1075. //-----------------------------------------------------------------------
  1076. void UpdateRowInfoInternally(int nTextRow);
  1077. //-----------------------------------------------------------------------
  1078. // Summary:
  1079. //      This method used to determine scroll direction for automatic
  1080. //      scrolling (when selecting by mouse).
  1081. // Parameters:
  1082. //      pnCols : [out] A pointer to int variable to receive columns count
  1083. //                     to scroll. May be NULL.
  1084. //      pnRows : [out] A pointer to int variable to receive rows count
  1085. //                     to scroll. May be NULL.
  1086. // Returns:
  1087. //      A flags from enum CXTPSyntaxEditCtrl::XTPScrolDirection.
  1088. //-----------------------------------------------------------------------
  1089. virtual DWORD GetAutoscrollDirection(int* pnCols = NULL, int* pnRows = NULL);
  1090. //-----------------------------------------------------------------------
  1091. // Summary:
  1092. //      This method used to subtract selection size from the specified position.
  1093. // Returns:
  1094. //      A subtracted position.
  1095. //-----------------------------------------------------------------------
  1096. XTP_EDIT_LINECOL _SubtractSelSizeFromPos(XTP_EDIT_LINECOL lcDispPos);
  1097. //-----------------------------------------------------------------------
  1098. // Summary:
  1099. //      This method used to set variables for autoindent.
  1100. // Parameters:
  1101. //      nBaseDocRow     : [in] A text row to calculate autoindentstart.
  1102. //      nDispCol_prev   : [in] A previouse display column (before enter pressed).
  1103. //-----------------------------------------------------------------------
  1104. virtual void DoAutoIndentIfNeed(int nBaseDocRow, int nDispCol_prev);
  1105. //-----------------------------------------------------------------------
  1106. // Summary:
  1107. //      This method used to notify parent window that scrollbar state changed.
  1108. // Parameters:
  1109. //      dwScrollBar : [in] Define the scroll bar(s) to change state as
  1110. //                         WS_HSCROLL and WS_VSCROLL flags.
  1111. //      dwState     : [in] Define the scroll bar(s) state as WS_HSCROLL and
  1112. //                         WS_VSCROLL flags.
  1113. // Remarks:
  1114. //      Default implementation send XTP_EDIT_NM_ENABLESCROLLBAR notification
  1115. //      to the parent.
  1116. //-----------------------------------------------------------------------
  1117. virtual void _EnableScrollBarNotify(DWORD dwScrollBar, DWORD dwState);
  1118. /////////////////////////////////////////////////////////////////////////
  1119. // Variables
  1120. /////////////////////////////////////////////////////////////////////////
  1121. BOOL m_bLineNumbers;        // TRUE if line number is to be printed
  1122. BOOL m_bDrawNodes;          // TRUE if Collapsible nodes signs are to be printed
  1123. BOOL m_bScrolling;          // Temporary variable to specify if scrolling by mouse wheel
  1124. BOOL m_bCaseSensitive;      // Case sensitive
  1125. BOOL m_bSelMargin;          // TRUE if selection margin is to be enabled or not
  1126. BOOL m_bVertScrollBar;      // TRUE if horizontal scrollbar is to be enabled
  1127. BOOL m_bHorzScrollBar;      // TRUE if vertical scrollbar is to be enabled
  1128. BOOL m_bEnableWhiteSpace;   // Show white space
  1129. BOOL m_bVirtualSpace;       // TRUE if virtual space is enabled (cursor can be paced in any place after line end).
  1130. BOOL m_bSyntaxColor;        // Enables or disables syntax colorization
  1131. BOOL m_bEnableOleDrag;      // Enables or disables OLE drag drop
  1132. BOOL m_bAutoIndent;         // Auto indentation is enabled or not
  1133. BOOL m_bIsSmartIndent;      // Smart indentation is enabled or not
  1134. BOOL m_bRightButtonDrag;    // TRUE if user is dragging through right button
  1135. BOOL m_bIsScrollingEndRow;  // Maintains a internal logic to draw the last row which is partly visible
  1136. BOOL m_bTokensLoaded;       // Specifies if tokens are loaded or not
  1137. BOOL m_bDroppable;          // TRUE if the current position is droppable
  1138. BOOL m_bDragging;           // TRUE if in dragging mode
  1139. BOOL m_bIsDragging;         // TRUE if dragging, FALSE otherwise
  1140. BOOL m_bPageDirty;          // TRUE if the whole page is dirty
  1141. BOOL m_bWideCaret;          // Stored Overwrite Caret Style: Thin or Thick.
  1142. BOOL m_bTabWithSpace;       // Store tabulation width.
  1143. BOOL m_bIsActive;           // TRUE if application is active.
  1144. BOOL m_bFocused;            // States if focused or not
  1145. BOOL m_bCreateScrollbarOnParent; // TRUE if parent window scroll bars are used, otherwise FALSE.
  1146. BOOL m_bReadOnly;           // Store ReadOnly mode.
  1147. BOOL m_bHideCaret;          // Store is caret visible.
  1148. BOOL m_bEnableEditAccelerators; // Enable/disable accelerators for Cut, Copy, Paste, Undo, Redoo and Select All operations.
  1149. int m_nTopCalculatedRow;    // Top row of the last range of rows that have scrollbars properly calculated
  1150. int m_nBottomCalculatedRow; // Bottom row of the last range of rows that have scrollbars properly calculated
  1151. int m_nEditbarLength;       // Edit bar length including gutter and line number
  1152. int m_nMarginLength;        // Margin length
  1153. int m_nLineNumLength;       // Line numbers length
  1154. int m_nNodesWidth;          // The width of the nodes signs
  1155. int m_nInsertTabCount;      // Temporarily stores the no of tabs to be inserted for auto indentation
  1156. int m_nInsertSpaceCount;    // Temporarily stores the no of space to be inserted for auto indentation
  1157. int m_nAutoIndentCol;       // Contains the column for auto indentation
  1158. int m_nTopRow;              // Top row for display
  1159. int m_nCurrentDocumentRow;  // Current row in the document
  1160. int m_nCurrentCol;          // Current absolute column
  1161. int m_nDispCol;             // Current display column
  1162. int m_nWheelScroll;         // Lines to scroll on mouse wheel
  1163. int m_nAverageLineLen;      // Average length of line
  1164. int m_nCollapsedTextRowsCount;  // The total amount of collapsed blocks in the document,
  1165. DWORD m_dwInsertPos;        // Current insert position
  1166. DWORD m_dwLastRedrawTime;   // Stores last redrawing time
  1167. #ifndef _UNICODE
  1168. // DBCS Support (specially for IME)
  1169. BYTE m_chPrevLeadByte; // For none-UNICODE version IME sends double byte chars as 2 WM_CHAR messages. This member keep a lead byte until second byte receive to process them together.
  1170. #endif
  1171. CPoint m_ptDropPos;         // Specifies the drop position
  1172. CPoint m_ptPrevMouse;       // Stored mouse position of the previous tip showing.
  1173. CBitmap m_bmpCache; // Current view cached picture
  1174. CXTPSyntaxEditSelection m_Selection;
  1175. //-----------------------------------------------------------------------
  1176. // Summary:
  1177. //      This enum defines flags for autoscroll direction.
  1178. //-----------------------------------------------------------------------
  1179. enum XTPScrolDirection
  1180. {
  1181. xtpLeft     = 0x0001,   // Defines left direction.
  1182. xtpRight    = 0x0010,   // Defines right direction.
  1183. xtpTop      = 0x0100,   // Defines top direction.
  1184. xtpBottom   = 0x1000,   // Defines bottom direction.
  1185. };
  1186. DWORD m_dwAutoScrollDirection;  // Store active autoscroll direction.
  1187. CXTPSyntaxEditBufferManager*    m_pBuffer;    // The buffer manager
  1188. CXTPSyntaxEditPaintManager*     m_pPaintManeger;    // The paint manager
  1189. CWnd*                           m_pParentWnd; // Points to parent window.
  1190. CString     m_strTmpLineTextBuff;       // Temporary text buffer
  1191. CUIntArray  m_arCollapsedTextRows;  // The array of rows with beginning of collapsed blocks.
  1192. CXTPSyntaxEditToolTipCtrl* m_pToolTip;         // Tool tip window for collapsed blocks text.
  1193. CXTPSyntaxEditAutoCompleteWnd* m_pAutoComplete;    // Auto complete popup window.
  1194. CString m_strDefaultCfgFilePath;            // Store configuration file full name.
  1195. int m_nHScrollMaxWidth;         // Maximum horizontal scrollbar position.
  1196. BOOL m_bWndCreateInProgress;    // Internal flag to indicate that windows creating is in progress.
  1197. CXTPSyntaxEditRowColorMap m_mapRowBkColor;  // The map for row back colors (cache)
  1198. CXTPSyntaxEditRowColorMap m_mapRowColor;        // The map for row colors (cache)
  1199. //-----------------------------------------------------------------------
  1200. // Summary:
  1201. //      Returns a pointer to the screen schema cache.
  1202. //-----------------------------------------------------------------------
  1203. CXTPSyntaxEditLexTextBlock* GetOnScreenSch(int nForRow);
  1204. //-----------------------------------------------------------------------
  1205. // Summary:
  1206. //      Clears a screen schema cache.
  1207. // Parameters:
  1208. //      nRowFrom : [in] An integer index of a row where to clear cache from.
  1209. //-----------------------------------------------------------------------
  1210. void ClearOnScreenSchCache(int nRowFrom);
  1211. //-----------------------------------------------------------------------
  1212. // Summary:
  1213. //      Calculates an average line length from start row to end row.
  1214. // Parameters:
  1215. //      nRowStart : [in] An integer index of a row where to calculate from.
  1216. //      nRowEnd : [in] An integer index of a row where to calculate to.
  1217. // Returns:
  1218. //      An average line length.
  1219. //-----------------------------------------------------------------------
  1220. virtual UINT CalcAveDataSize(int nRowStart, int nRowEnd);
  1221. // -----------------------------------------------------------------
  1222. // Summary:
  1223. //     This member function registers the window class if it has not
  1224. //     already been registered.
  1225. // Parameters:
  1226. //     hInstance - Instance of resource where control is located
  1227. // Returns:
  1228. //     A boolean value that specifies if the window is successfully
  1229. //     registered.<p/>
  1230. //     TRUE if the window class is successfully registered.<p/>
  1231. //     Otherwise FALSE.
  1232. // -----------------------------------------------------------------
  1233. BOOL RegisterWindowClass(HINSTANCE hInstance = NULL);
  1234. //===========================================================================
  1235. // CXTPSyntaxEditCtrl::CTextSearchCache
  1236. //===========================================================================
  1237. class _XTP_EXT_CLASS CTextSearchCache
  1238. {
  1239. public:
  1240. CTextSearchCache();
  1241. void Update(int nCurrTopRow);
  1242. int nForTopRow;
  1243. CXTPSyntaxEditLexTextBlockPtr ptrTBStart;
  1244. };
  1245. CTextSearchCache m_fcCollapsable;   // Collapsible rows cache
  1246. CTextSearchCache m_fcRowColors;     // Row colors cache
  1247. //===========================================================================
  1248. // CXTPSyntaxEditCtrl::CScreenSearchBlock
  1249. //===========================================================================
  1250. class _XTP_EXT_CLASS CScreenSearchBlock
  1251. {
  1252. public:
  1253. CScreenSearchBlock();
  1254. virtual ~CScreenSearchBlock();
  1255. CScreenSearchBlock(const CScreenSearchBlock& rSrc);
  1256. int nRowStart;
  1257. int nRowEnd;
  1258. DWORD dwLastAccessTime;
  1259. CXTPSyntaxEditLexTextBlockPtr ptrTBFirst;
  1260. };
  1261. typedef CArray<CScreenSearchBlock, CScreenSearchBlock&> CScreenSearchBlockArray;
  1262. //===========================================================================
  1263. // CXTPSyntaxEditCtrl::CScreenSearchCache
  1264. //===========================================================================
  1265. class _XTP_EXT_CLASS CScreenSearchCache : public CScreenSearchBlockArray
  1266. {
  1267. typedef CScreenSearchBlockArray Base;
  1268. public:
  1269. DWORD m_dwLastRemoveOldTime;
  1270. CScreenSearchCache();
  1271. virtual ~CScreenSearchCache();
  1272. void RemoveAll();
  1273. void RemoveAt(int nIndex);
  1274. void RemoveOld(int nTimeOut_sec);
  1275. };
  1276. CScreenSearchCache  m_arOnScreenSchCache;   // On-screen schema cache for this control.
  1277. CByteArray          m_arValidDispRows;      // An array with indexes of valid displayed rows.
  1278. //===========================================================================
  1279. // CXTPSyntaxEditCtrl::CAverageVal
  1280. //===========================================================================
  1281. class CAverageVal
  1282. {
  1283. public:
  1284. CAverageVal(int nDataSize = 100);
  1285. void AddValue(UINT uVal);
  1286. UINT GetAverageValue(UINT uDefaultIfNoData = 0);
  1287. protected:
  1288. int m_nDataSize;
  1289. int m_nNextIndex;
  1290. CUIntArray m_arData;
  1291. };
  1292. CAverageVal m_aveRedrawScreenTime;
  1293. //===========================================================================
  1294. CXTPSyntaxEditDrawTextProcessor m_DrawTextProcessor;
  1295. CXTPImmWrapper  m_ImmWrapper;
  1296. BOOL m_bIMEsupported;
  1297. public:
  1298. BOOL m_bDisableRedraw;  // If TRUE - control window is not redraw, it is draw last window content (draw cached bitmap). FALSE by default.
  1299. BOOL m_bDeleteOnFinalRelease;   // If TRUE - Delete self OnFinalRelease() call.
  1300. };
  1301. /////////////////////////////////////////////////////////////////////////////
  1302. AFX_INLINE void CXTPSyntaxEditCtrl::InvalidateRow(int nDispRow) {
  1303. InvalidateRows(nDispRow, nDispRow);
  1304. }
  1305. AFX_INLINE BOOL CXTPSyntaxEditCtrl::GetAutoIndent() const {
  1306. return m_bAutoIndent;
  1307. }
  1308. AFX_INLINE BOOL CXTPSyntaxEditCtrl::GetSyntaxColor() const {
  1309. return m_bSyntaxColor;
  1310. }
  1311. AFX_INLINE BOOL CXTPSyntaxEditCtrl::GetSelMargin() const {
  1312. return m_bSelMargin;
  1313. }
  1314. AFX_INLINE CXTPSyntaxEditBufferManager* CXTPSyntaxEditCtrl::GetEditBuffer() {
  1315. return m_pBuffer;
  1316. }
  1317. AFX_INLINE CXTPSyntaxEditPaintManager* CXTPSyntaxEditCtrl::GetPaintManager() {
  1318. return m_pPaintManeger;
  1319. }
  1320. AFX_INLINE BOOL CXTPSyntaxEditCtrl::GetHorzScrollBar() const {
  1321. return m_bHorzScrollBar;
  1322. }
  1323. AFX_INLINE BOOL CXTPSyntaxEditCtrl::GetVertScrollBar() const {
  1324. return m_bVertScrollBar;
  1325. }
  1326. AFX_INLINE BOOL CXTPSyntaxEditCtrl::IsActive() const {
  1327. return m_bIsActive;
  1328. }
  1329. AFX_INLINE BOOL CXTPSyntaxEditCtrl::IsCreateScrollbarOnParent() const {
  1330. return m_bCreateScrollbarOnParent;
  1331. }
  1332. AFX_INLINE void CXTPSyntaxEditCtrl::SetCreateScrollbarOnParent(BOOL bSet) {
  1333. m_bCreateScrollbarOnParent = bSet;
  1334. }
  1335. AFX_INLINE CXTPSyntaxEditDrawTextProcessor& CXTPSyntaxEditCtrl::GetDrawTextProcessor() {
  1336. return m_DrawTextProcessor;
  1337. }
  1338. AFX_INLINE BOOL CXTPSyntaxEditCtrl::IsEnabledVirtualSpace() const {
  1339. return m_bVirtualSpace;
  1340. }
  1341. AFX_INLINE CXTPSyntaxEditSelection& CXTPSyntaxEditCtrl::GetSelection() {
  1342. return m_Selection;
  1343. }
  1344. AFX_INLINE CXTPSyntaxEditAutoCompleteWnd* CXTPSyntaxEditCtrl::GetAutoCompleteWnd() {
  1345. return m_pAutoComplete;
  1346. }
  1347. AFX_INLINE BOOL CXTPSyntaxEditCtrl::IsReadOnly() {
  1348. return m_bReadOnly;
  1349. }
  1350. AFX_INLINE void CXTPSyntaxEditCtrl::SetReadOnly(BOOL bReadOnly) {
  1351. m_bReadOnly = bReadOnly;
  1352. if (m_hWnd)
  1353. Invalidate(FALSE);
  1354. }
  1355. AFX_INLINE BOOL CXTPSyntaxEditCtrl::IsHideCaret() {
  1356. return m_bHideCaret;
  1357. }
  1358. AFX_INLINE void CXTPSyntaxEditCtrl::SetHideCaret(BOOL bHide) {
  1359. m_bHideCaret = bHide;
  1360. if (m_hWnd)
  1361. Invalidate(FALSE);
  1362. }
  1363. AFX_INLINE BOOL CXTPSyntaxEditCtrl::GetCollapsibleNodes() const {
  1364. return m_bDrawNodes;
  1365. }
  1366. AFX_INLINE BOOL CXTPSyntaxEditCtrl::IsEnabledEditAccelerators() {
  1367. return m_bEnableEditAccelerators;
  1368. }
  1369. AFX_INLINE void CXTPSyntaxEditCtrl::EnableEditAccelerators(BOOL bEnable) {
  1370. m_bEnableEditAccelerators = bEnable;
  1371. }
  1372. AFX_INLINE BOOL CXTPSyntaxEditCtrl::_IsVirtualSpaceActive() const {
  1373. BOOL bVirtualSpace = IsEnabledVirtualSpace();
  1374. return bVirtualSpace;
  1375. }
  1376. /////////////////////////////////////////////////////////////////////////////
  1377. //{{AFX_INSERT_LOCATION}}
  1378. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  1379. #endif // !defined(__XTPSYNTAXEDITSYNTAXEDITCTRL_H__)