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

对话框与窗口

开发平台:

Visual C++

  1. // XTPSyntaxEditCtrl.h : header file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME SYNTAX EDIT LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPSYNTAXEDITSYNTAXEDITCTRL_H__)
  22. #define __XTPSYNTAXEDITSYNTAXEDITCTRL_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPSyntaxEditDrawTextProcessor.h"
  28. #include "XTPSyntaxEditSelection.h"
  29. using namespace XTPSyntaxEditLexAnalyser;
  30. //{{AFX_CODEJOCK_PRIVATE
  31. typedef CMap<int,int,COLORREF,COLORREF> CXTPSyntaxEditRowColorMap;
  32. //}}AFX_CODEJOCK_PRIVATE
  33. // forwards
  34. class CXTPSyntaxEditBufferManager;
  35. class CXTPSyntaxEditConfigurationManager;
  36. class CXTPSyntaxEditToolTipCtrl;
  37. class CXTPSyntaxEditAutoCompleteWnd;
  38. class CXTPSyntaxEditLineMarksManager;
  39. typedef CList<XTP_EDIT_TEXTBLOCK, XTP_EDIT_TEXTBLOCK> CXTPSyntaxEditTextBlockList;
  40. typedef LPCTSTR XTP_EDIT_LINEMARKTYPE;
  41. struct XTP_EDIT_LMPARAM;
  42. //===========================================================================
  43. // Summary: This class is the main CWnd - based editor class. It is a rectangular
  44. //          child window in which the user can enter and edit text.
  45. //
  46. //          The control is also capable of enhance text coloring for a number
  47. //          of specific input file types, e.c. C/C++ source files, HTML files, etc.
  48. //          User can create and customize his own text files schemes - they are
  49. //          independent of source files.
  50. //          The control contains the main configuration file, which can contain
  51. //          references to any specific configuration files. By default, this
  52. //          file is placed in the same folder as the application executable and
  53. //          is called <i>EditControl.ini</i>.
  54. //          The main configuration file contains 2 blocks with references to
  55. //          input file lexicographic schemes in the specific format (see below)
  56. //          and color themes for the editor, which could be applied to the
  57. //          control editing any file type. The format of the main configuration
  58. //          file is the following:
  59. //<code>
  60. //[Schemas]
  61. //FileType1=SchemaFileName1.schclass
  62. //FileType2=SchemaFileName2.schclass
  63. //...
  64. //
  65. //[Themes]
  66. //ThemeName1=ThemeFileName1.ini
  67. //ThemeName2=ThemeFileName2.ini
  68. //...
  69. //</code>
  70. //
  71. // Example:
  72. // See also: <LINK XTPSyntaxEditLexSchemas.h, LexSchemas>
  73. //===========================================================================
  74. class _XTP_EXT_CLASS CXTPSyntaxEditCtrl : public CWnd
  75. {
  76. DECLARE_DYNAMIC(CXTPSyntaxEditCtrl)
  77. DECLARE_XTP_SINK(CXTPSyntaxEditCtrl, m_Sink)
  78. friend class CXTPSyntaxEditAutoCompleteWnd;
  79. friend class CXTPSyntaxEditView;
  80. friend class CXTPSyntaxEditCommand;
  81. friend class CXTPSyntaxEditPaintManager;
  82. friend class CXTPSyntaxEditSelection;
  83. friend class CSyntaxEditCtrl; // for AciveX implementation
  84. public:
  85. //-----------------------------------------------------------------------
  86. // Summary:
  87. //      Default object constructor.
  88. //-----------------------------------------------------------------------
  89. CXTPSyntaxEditCtrl();
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //      Destroys a CXTPSyntaxEditCtrl object, handles cleanup and de- allocation
  93. //-----------------------------------------------------------------------
  94. virtual ~CXTPSyntaxEditCtrl();
  95. public:
  96. //-----------------------------------------------------------------------
  97. // Summary:
  98. //     Determines if line numbering is enabled or not.
  99. // Returns:
  100. //     TRUE if line numbering is enabled, FALSE otherwise.
  101. //-----------------------------------------------------------------------
  102. BOOL GetLineNumbers() const;
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Enables or disables line numbering.
  106. // Parameters:
  107. //     bLineNumbers : [in] Pass TRUE to enable line numbering.
  108. //     bUpdateReg   : [in] Set this parameter as TRUE to update this setting
  109. //                         in the registry. It is FALSE by default.
  110. //-----------------------------------------------------------------------
  111. BOOL SetLineNumbers(BOOL bLineNumbers, BOOL bUpdateReg=FALSE);
  112. //-----------------------------------------------------------------------
  113. // Summary:
  114. //     Determines if Collapsible Nodes is enabled or not.
  115. // Returns:
  116. //     TRUE if Collapsible Nodes area is enabled, FALSE otherwise.
  117. //-----------------------------------------------------------------------
  118. BOOL GetCollapsibleNodes() const;
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     Enables or disables Collapsible Nodes area.
  122. // Parameters:
  123. //     bDrawNodes : [in] Pass TRUE to show Collapsible Nodes area.
  124. //     bUpdateReg : [in] Set this parameter as TRUE to update this setting
  125. //                         in the registry. It is FALSE by default.
  126. //-----------------------------------------------------------------------
  127. void SetCollapsibleNodes(BOOL bDrawNodes, BOOL bUpdateReg=FALSE);
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     Replaces all the tabs with blank spaces.
  131. // Returns:
  132. //     TRUE if Untabify done successfully, FALSE otherwise.
  133. //-----------------------------------------------------------------------
  134. BOOL UnTabifySelection();
  135. //-----------------------------------------------------------------------
  136. // Summary:
  137. //     Replaces all the blank spaces with tabs.
  138. // Returns:
  139. //     TRUE if Tabify done successfully, FALSE otherwise.
  140. //-----------------------------------------------------------------------
  141. BOOL TabifySelection();
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //     Turns selected text to the lowercase.
  145. // Returns:
  146. //     TRUE if performs successfully, FALSE otherwise.
  147. //-----------------------------------------------------------------------
  148. BOOL LowercaseSelection();
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     Turns selected text to the uppercase.
  152. // Returns:
  153. //     TRUE if performs successfully, FALSE otherwise.
  154. //-----------------------------------------------------------------------
  155. BOOL UppercaseSelection();
  156. //-----------------------------------------------------------------------
  157. // Summary:
  158. //     This method used to get current selection.
  159. // Returns:
  160. //     A reference to CXTPSyntaxEditSelection object.
  161. // See Also: CXTPSyntaxEditSelection
  162. //-----------------------------------------------------------------------
  163. CXTPSyntaxEditSelection& GetSelection();
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     This method used to get Auto-Complete window.
  167. // Returns:
  168. //     A pointer to CXTPSyntaxEditAutoCompleteWnd object.
  169. // See Also:
  170. //     CXTPSyntaxEditAutoCompleteWnd
  171. //-----------------------------------------------------------------------
  172. CXTPSyntaxEditAutoCompleteWnd* GetAutoCompleteWnd();
  173. //-----------------------------------------------------------------------
  174. // Summary:
  175. //     Returns the number of rows can be printed per page.
  176. // Returns:
  177. //     int value determines the number of rows can be printed in current
  178. //     settings.
  179. //-----------------------------------------------------------------------
  180. int GetRowPerPage();
  181. //-----------------------------------------------------------------------
  182. // Summary:
  183. //     Returns visibility status for given row.
  184. // Parameters:
  185. //     iRow: [in] The document row number to be tested.
  186. // Remarks:
  187. //     Call this member function to determine if a row of the document is
  188. //     visible or not.
  189. // Returns:
  190. //     TRUE if the row is visible, FALSE otherwise.
  191. //-----------------------------------------------------------------------
  192. BOOL IsRowVisible(int iRow);
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //     Sets right mouse button for dragging.
  196. // Parameters:
  197. //     bRightButtonDrag: [in] Boolean state flag of right button drag mode.
  198. // Remarks:
  199. //     Mainly used by <b>CXTPSyntaxEditView</b> for setting right button
  200. //     drag mode. If parameter is TRUE function sets right button for
  201. //     dragging, otherwise dragging mode is disabled for right mouse
  202. //     button.
  203. // See also:
  204. //     void CancelRightButtonDrag(), BOOL IsRightButtonDrag()
  205. //-----------------------------------------------------------------------
  206. void SetRightButtonDrag(BOOL bRightButtonDrag = TRUE);
  207. //-----------------------------------------------------------------------
  208. // Summary:
  209. //     Sets scroll bars to enable/disable state.
  210. // Parameters:
  211. //     bHorzSBar: [in] TRUE enables horizontal scroll bar; otherwise disables.
  212. //     bVertSBar: [in] TRUE enables vertical scroll bar; otherwise disables.
  213. //     bUpdateReg: [in] Set this parameter as TRUE to update this setting
  214. //                      in the registry. It is FALSE by default.
  215. // Summary:
  216. //     Call this member function to  change state for scroll bars. This
  217. //     function operates on either vertical and horizontal scroll bars
  218. //     simultaneously. Disabled scroll bar is not visible.
  219. // Returns:
  220. //      TRUE if scrollbars were updated, FALSE otherwise.
  221. //-----------------------------------------------------------------------
  222. BOOL SetScrollBars(BOOL bHorzSBar, BOOL bVertSBar, BOOL bUpdateReg=FALSE);
  223. //-----------------------------------------------------------------------
  224. // Summary:
  225. //      Returns the if horizontal scrollbar is enabled.
  226. // Returns:
  227. //      TRUE if horizontal scrollbar is enabled, FALSE otherwise.
  228. //-----------------------------------------------------------------------
  229. BOOL GetHorzScrollBar() const;
  230. //-----------------------------------------------------------------------
  231. // Summary:
  232. //      Returns the if vertical scrollbar is enabled.
  233. // Returns:
  234. //      TRUE if vertical scrollbar is enabled, FALSE otherwise.
  235. //-----------------------------------------------------------------------
  236. BOOL GetVertScrollBar() const;
  237. //-----------------------------------------------------------------------
  238. // Summary:
  239. //     Sets gutter to enable/disable state.
  240. // Parameters:
  241. //     bSelMargin: [in] Boolean state flag of gutter.
  242. //     bUpdateReg: [in] Set this parameter as TRUE to update this setting
  243. //                      in the registry. It is FALSE by default.
  244. // Summary:
  245. //     Call this member function to  change state for gutter. Passing TRUE
  246. //     you enable gutter. Otherwise gutter is disabled. Disabled gutter is
  247. //     not visible.
  248. // See also:
  249. //     BOOL GetSelMargin()
  250. //-----------------------------------------------------------------------
  251. BOOL SetSelMargin(BOOL bSelMargin, BOOL bUpdateReg=FALSE);
  252. //-----------------------------------------------------------------------
  253. // Summary:
  254. //     Returns gutter state.
  255. // Remarks:
  256. //     Call this member function to determine current state of gutter.
  257. //     It may be enabled or disabled. Disabled gutter is not visible and
  258. //     inactive.
  259. // Returns:
  260. //     TRUE if gutter is enabled, FALSE otherwise
  261. // See also:
  262. //     void SetSelMargin(BOOL bEnabled = TRUE)
  263. //-----------------------------------------------------------------------
  264. BOOL GetSelMargin() const;
  265. //-----------------------------------------------------------------------
  266. // Summary:
  267. //    Sets syntax colorization state.
  268. // Parameters:
  269. //     bSyntaxColor: [in] Boolean flag determines if colorization is enabled
  270. //                        or disabled.
  271. //     bUpdateReg:   [in] Set this parameter as TRUE to update this setting
  272. //                        in the registry. It is FALSE by default.
  273. // Returns:
  274. //     Call this member function to change state syntax colorization.
  275. //     Passing TRUE you enable syntax colorization, otherwise it is
  276. //     disabled.
  277. // See also:
  278. //     BOOL GetSyntaxColor()
  279. //-----------------------------------------------------------------------
  280. BOOL SetSyntaxColor(BOOL bSyntaxColor, BOOL bUpdateReg=FALSE);
  281. //-----------------------------------------------------------------------
  282. // Summary:
  283. //     Return state of syntax colorization.
  284. // Summary:
  285. //     Call  this member function to determine current syntax colorization
  286. //     state.
  287. // Returns:
  288. //     TRUE if syntax colorization is enabled, FALSE otherwise.
  289. // See also:
  290. //     void SetSyntaxColor(BOOL bEnable = TRUE)
  291. //-----------------------------------------------------------------------
  292. BOOL GetSyntaxColor() const;
  293. //-----------------------------------------------------------------------
  294. // Summary:
  295. //     Sets auto indentation state.
  296. // Parameters:
  297. //     bAutoIndent: [in] boolean flag determines state auto indent.
  298. //     bUpdateReg:  [in] Set this parameter as TRUE to update this setting
  299. //                       in the registry. It is FALSE by default.
  300. // Remarks:
  301. //     Call this member function change state of auto indentation. Passing
  302. //     TRUE you enable it, disable otherwise.
  303. // See also:
  304. //     BOOL GetAutoIndent()
  305. //-----------------------------------------------------------------------
  306. BOOL SetAutoIndent(BOOL bAutoIndent, BOOL bUpdateReg=FALSE);
  307. //-----------------------------------------------------------------------
  308. // Summary:
  309. //     Returns state of auto intend.
  310. // Remarks:
  311. //     Call this member function to determine current auto intend state.
  312. // Returns:
  313. //     TRUE if syntax auto indent is enabled, FALSE otherwise.
  314. // See also:
  315. //     void SetAutoIndent(BOOL bEnable = TRUE)
  316. //-----------------------------------------------------------------------
  317. BOOL GetAutoIndent() const;
  318. //-----------------------------------------------------------------------
  319. // Summary:
  320. //     Sets the tab size.
  321. // Parameters:
  322. //     nTabSize:    [in] The tab size to set should be between 2 to 10.
  323. //     bUpdateReg:  [in] Set this parameter as TRUE to update this setting
  324. //                       in the registry. It is FALSE by default.
  325. // Remarks:
  326. //     Call this member function to set tab size. Size is measured in
  327. //     space character and should be between 2 to 10.
  328. // See also:
  329. //     int GetTabSize()
  330. //-----------------------------------------------------------------------
  331. BOOL SetTabSize(int nTabSize, BOOL bUpdateReg = FALSE);
  332. //-----------------------------------------------------------------------
  333. // Summary:
  334. //     Returns the tab size.
  335. // Returns:
  336. //     Actual tab size is number of character.
  337. // See also:
  338. //     void SetTabSize(int iTabSize)
  339. //-----------------------------------------------------------------------
  340. int GetTabSize() const;
  341. //-----------------------------------------------------------------------
  342. // Summary:
  343. //     Returns the status if tab should be replaced by space.
  344. // Returns:
  345. //     Returns TRUE if tab is enabled, FALSE otherwise.
  346. // See also:
  347. //     void SetTabWithSpace(BOOL bReplace = TRUE);
  348. //-----------------------------------------------------------------------
  349. BOOL GetTabWithSpace() const;
  350. //-----------------------------------------------------------------------
  351. // Summary:
  352. //     Enables/disables replacing tabs with spaces.
  353. // Parameters:
  354. //     bTabWithSpace: [in] Boolean flag determines enable/disable state.
  355. //     bUpdateReg:    [in] Set this parameter as TRUE to update this setting
  356. //                         in the registry. It is FALSE by default.
  357. // Remarks:
  358. //     Call this member function to enable/disable replacing tabs with space
  359. //     Pass TRUE if tab should be replaced with space, FALSE otherwise.
  360. // See also:
  361. //     BOOL GetTabWithSpace()
  362. //-----------------------------------------------------------------------
  363. BOOL SetTabWithSpace(BOOL bTabWithSpace, BOOL bUpdateReg=FALSE);
  364. //-----------------------------------------------------------------------
  365. // Summary:
  366. //      Set the text color of the specified row in the colors cache.
  367. // Parameters:
  368. //      nRow     : [in] A row identifier for changing the foreground color.
  369. //      clrFront : [in] An actual text color foreground.
  370. // See also:
  371. //      GetRowColor(int nRow);
  372. //-----------------------------------------------------------------------
  373. void SetRowColor(int nRow, COLORREF clrFront);
  374. //-----------------------------------------------------------------------
  375. // Summary:
  376. //      Gets the text color of the specified row in the colors cache.
  377. // Parameters:
  378. //      nRow    : [in] A row identifier for getting the foreground color.
  379. // Returns:
  380. //      The actual text color foreground as a COLORREF value.
  381. // See also:
  382. //      SetRowColor(int nRow);
  383. //-----------------------------------------------------------------------
  384. COLORREF GetRowColor(int nRow);
  385. //-----------------------------------------------------------------------
  386. // Summary:
  387. //      Sets the background color of a specified row in the colors cache.
  388. // Parameters:
  389. //      nRow    : [in] A row identifier to set the background color.
  390. //      crBack : [in] A background color
  391. // See also:
  392. //      COLORREF GetRowBkColor(int nRow);
  393. //-----------------------------------------------------------------------
  394. void SetRowBkColor(int nRow, COLORREF crBack);
  395. //-----------------------------------------------------------------------
  396. // Summary:
  397. //      Returns the background color of the specified row in the colors cache.
  398. // Parameters:
  399. //      nRow     - Specifies the document row.
  400. // Returns:
  401. //      COLORREF value of the current background color
  402. // See also:
  403. //      void SetRowBkColor(int nRow, COLORREF crBack);
  404. //-----------------------------------------------------------------------
  405. COLORREF GetRowBkColor(int nRow);
  406. //-----------------------------------------------------------------------
  407. // Summary:
  408. //     Returns the status if white space should be shown or not.
  409. // Remarks:
  410. //     Call this member function to determine if currently white space
  411. //     should be shown or not.
  412. // Returns:
  413. //     TRUE if white space should be shown, FALSE otherwise.
  414. // See also:
  415. //     void EnableWhiteSpace(BOOL bShow = TRUE)
  416. //-----------------------------------------------------------------------
  417. BOOL IsEnabledWhiteSpace();
  418. //-----------------------------------------------------------------------
  419. // Summary:
  420. //     Enables/disables showing white spaces.
  421. // Parameters:
  422. //     bShow: [in] Boolean flag determines if white space should be shown
  423. //            or not
  424. // Summary:
  425. //     Call tis member function to enable or disable showing white spaces
  426. //     facility. Pass TRUE if white space should be shown, FALSE otherwise.
  427. // See also:
  428. //     BOOL IsEnabledWhiteSpace()
  429. //-----------------------------------------------------------------------
  430. void EnableWhiteSpace(BOOL bShow = TRUE);
  431. //-----------------------------------------------------------------------
  432. // Summary:
  433. //     Returns the status of Virtual Space mode.
  434. // Returns:
  435. //     TRUE if Virtual Space mode enabled, FALSE otherwise.
  436. // See also:
  437. //     EnableVirtualSpace
  438. //-----------------------------------------------------------------------
  439. BOOL IsEnabledVirtualSpace() const;
  440. //-----------------------------------------------------------------------
  441. // Summary:
  442. //     Enables/disables a Virtual Space mode.
  443. // Parameters:
  444. //     bEnable      : [in] Set as TRUE to enable Virtual Space mode and as FALSE
  445. //                    to disable.
  446. //     bUpdateReg   : [in] Set this parameter as TRUE to update this setting
  447. //                    in the registry. It is FALSE by default.
  448. // Summary:
  449. //     Call tis member function to enable or disable showing white spaces
  450. //     facility. Pass TRUE if white space should be shown, FALSE otherwise.
  451. // See also:
  452. //     BOOL IsEnabledWhiteSpace()
  453. //-----------------------------------------------------------------------
  454. void EnableVirtualSpace(BOOL bEnable, BOOL bUpdateReg=FALSE);
  455. //-----------------------------------------------------------------------
  456. // Summary:
  457. //     Returns state flag of mouse right button for drag or not.
  458. // Remarks:
  459. //     Call this member function to determine if mouse right button is
  460. //     currently enabled for dragging.
  461. // Returns:
  462. //     TRUE if right button drag is enabled, FALSE otherwise.
  463. // See also:
  464. //     void SetRightButtonDrag(BOOL bRightButtonDrag = TRUE)
  465. //     void CancelRightButtonDrag();
  466. //-----------------------------------------------------------------------
  467. BOOL IsRightButtonDrag();
  468. //-----------------------------------------------------------------------
  469. // Summary:
  470. //     Cancels right button drag.
  471. // Remarks:
  472. //     Call this member function to cancel right button drag. It is mainly
  473. //     by by CXTPSyntaxEditView class.
  474. // See also:
  475. //   void SetRightButtonDrag(BOOL bRightButtonDrag = TRUE),
  476. //   IsRightButtonDrag()
  477. //   CXTPSyntaxEditView
  478. //-----------------------------------------------------------------------
  479. void CancelRightButtonDrag();
  480. //-----------------------------------------------------------------------
  481. // Summary:
  482. //     Displays the default context menu.
  483. // Remarks:
  484. //     This member function calls OnContextMenu().
  485. // See also:
  486. //     OnContextMenu()
  487. //-----------------------------------------------------------------------
  488. void ShowDefaultContextMenu();
  489. //-----------------------------------------------------------------------
  490. // Summary:
  491. //     Handle the drop operation within the same edit buffer.
  492. // Parameters:
  493. //      bCopy: [in] TRUE if drag is to copy, FALSE to specify a move.
  494. //-----------------------------------------------------------------------
  495. void HandleDrop(BOOL bCopy);
  496. //-----------------------------------------------------------------------
  497. // Summary: Call this method to move to the row
  498. // Parameters:
  499. //     iRow       - [in] row index.
  500. //     bSelectRow - [in] select row if TRUE.
  501. //-----------------------------------------------------------------------
  502. void GoToRow(int iRow, BOOL bSelectRow = FALSE);
  503. //-----------------------------------------------------------------------
  504. // Summary:
  505. //     Replaces a selection with the supplied text.
  506. // Parameters:
  507. //     szNewText: [in] The text to be pasted into the selected part.
  508. // Returns:
  509. //     TRUE if replaced, FALSE otherwise
  510. //-----------------------------------------------------------------------
  511. BOOL ReplaceSel(LPCTSTR szNewText);
  512. //-----------------------------------------------------------------------
  513. // Summary:
  514. //      Replaces all occurrences of szFindText to szReplaceText.
  515. // Parameters:
  516. //      szFindText : [in] Pointer to text to find.
  517. //      szReplaceText: [in] Pointer to text which will replace.
  518. //      bMatchWholeWord: [in] Boolean flag to match whole word.
  519. //      bMatchCase: [in] Boolean flag to match case.
  520. // Returns:
  521. //      The number of founded matches.
  522. //-----------------------------------------------------------------------
  523. int ReplaceAll(LPCTSTR szFindText, LPCTSTR szReplaceText, BOOL bMatchWholeWord, BOOL bMatchCase);
  524. //-----------------------------------------------------------------------
  525. // Summary:
  526. //     Returns the selected text.
  527. // Parameters:
  528. //      strText: [out] Reference to a CString object where returned text
  529. //               will be placed.
  530. // Returns:
  531. //     Number of character in the returned text.
  532. //-----------------------------------------------------------------------
  533. int GetSelectionText(CString& strText);
  534. //-----------------------------------------------------------------------
  535. // Summary:
  536. //     Sets the drop position.
  537. // Parameters:
  538. //     iRow: [in] Row of the drop position.
  539. //     iCol: [in] Col of the drop position.
  540. // Remarks:
  541. //     Call this member function to set the drop position. Mainly used by
  542. //     CXTPSyntaxEditView during OLE drag drop operation.
  543. // See also:
  544. //     CXTPSyntaxEditView class
  545. //-----------------------------------------------------------------------
  546. void SetDropPos(int iRow, int iCol);
  547. //-----------------------------------------------------------------------
  548. // Summary:
  549. //     Returns the current absolute horizontal text position.
  550. // Summary:
  551. //     Call this member function to determine the current absolute text
  552. //     position, mainly used in text insert or delete operations.
  553. //     Treats tabs as one character.
  554. // Returns:
  555. //     Return absolute column position.
  556. //-----------------------------------------------------------------------
  557. int GetCurAbsCol();
  558. //-----------------------------------------------------------------------
  559. // Summary:
  560. //     Returns a handle of selection buffer.
  561. // Parameters:
  562. //     nFormat: [in] Determines clipboard format to be returned
  563. //              (CF_TEXT or CF_UNICODETEXT)
  564. // Summary:
  565. //     Call this member function get a handle of a selection buffer in the
  566. //     global memory in one of the clipboard format of CF_TEXT or
  567. //     CF_UNICODETEXT. Mainly used in OLE drag drop operation.
  568. // Returns:
  569. //     Handle of a globally allocated memory.
  570. //-----------------------------------------------------------------------
  571. HGLOBAL GetSelectionBuffer(UINT nFormat);
  572. //-----------------------------------------------------------------------
  573. // Summary:
  574. //     Enables or disables OLE drag drop mode.
  575. // Parameters:
  576. //     bEnableDrag: [in] Determines state of OLE drag drop.
  577. // Remarks:
  578. //     CAll this member function toenablr/disable OLE drag drop. Pass TRUE
  579. //     to enable OLE drag drop, otherwise pass FALSE.
  580. //-----------------------------------------------------------------------
  581. void EnableOleDrag(BOOL bEnableDrag = TRUE);
  582. //-----------------------------------------------------------------------
  583. // Summary:
  584. //     Validates and set the row column to a valid one.
  585. // Parameters:
  586. //     nRow:    [in]     Document row to be validated.
  587. //     nCol:    [in out] Col to be validated.
  588. //     nAbsCol: [in out] Absolute col to be validated.
  589. //-----------------------------------------------------------------------
  590. void ValidateCol(const int nRow, int& nCol, int& nAbsCol);
  591. //-----------------------------------------------------------------------
  592. // Summary:
  593. //     Sends notification when current text position was changed.
  594. // Parameters:
  595. //     nRow: [in] Row to be notified in document coordinates.
  596. //     nCol: [in] Column to be notified.
  597. // Remarks:
  598. //     Call this member function to send notification to the parent class
  599. //     about the row col changes.
  600. //-----------------------------------------------------------------------
  601. void NotifyCurRowCol(int nRow, int nCol);
  602. //-----------------------------------------------------------------------
  603. // Summary:
  604. //     Returns the row and col (Not validated) for a specific point. Use
  605. //     CalcValidDispCol for validation.
  606. // Parameters:
  607. //          pt :        [in]  The point in client co-ordinate.
  608. //          pRow :      [out] The out parameter contains the calculated
  609. //                             document row.
  610. //          pCol :      [out] The out parameter contains the calculated col.
  611. //          pDispRow :  [out] The out parameter contains the calculated
  612. //                            visible row.
  613. //          pDispCol :  [out] The out parameter contains the calculated
  614. //                            visible col.
  615. //          bVirtualSpace : [in]  Set TRUE if virtual space is enabled
  616. //                                (cursor can be paced in any place after line end).
  617. // Returns:
  618. //      BOOL : True if point was out of bound and index was corrected
  619. //-----------------------------------------------------------------------
  620. BOOL RowColFromPoint(CPoint pt, int *pRow, int *pCol, int *pDispRow = NULL,
  621.  int *pDispCol = NULL, BOOL bVirtualSpace = -1);
  622. //-----------------------------------------------------------------------
  623. // Summary:
  624. //     Deletes tab from the front of a selection.
  625. // Returns:
  626. //     BOOL : True if successful, false if not.
  627. //-----------------------------------------------------------------------
  628. BOOL DecreaseIndent();
  629. //-----------------------------------------------------------------------
  630. // Summary:
  631. //     Inserts tab in front of a selection.
  632. // Returns:
  633. //     BOOL - True if successful, false if not.
  634. //-----------------------------------------------------------------------
  635. BOOL IncreaseIndent();
  636. //-----------------------------------------------------------------------
  637. // Summary:
  638. //     Deletes all the lines in a selection or a specific line in the case
  639. //     if no selection exists.
  640. // Parameters:
  641. //     iForceDeleteRow : [in] The document row to delete.
  642. //-----------------------------------------------------------------------
  643. void DeleteSelectedLines(int iForceDeleteRow);
  644. //-----------------------------------------------------------------------
  645. // Summary:
  646. //     Shows or hides the scroll bar.
  647. // Parameters:
  648. //     bShow : [in] Determines if a horizontal scrollbar should be shown.
  649. //                  Pass TRUE to show FALSE otherwise. Default value is
  650. //                  TRUE.
  651. //-----------------------------------------------------------------------
  652. void ShowHScrollBar(BOOL bShow = TRUE);
  653. //-----------------------------------------------------------------------
  654. // Summary:
  655. //     Copy or move text after dragging.
  656. // Parameters:
  657. //      bCopy: [in] Set as TRUE to copy text, FALSE to move text.
  658. //-----------------------------------------------------------------------
  659. void CopyOrMoveText(BOOL bCopy);
  660. //-----------------------------------------------------------------------
  661. // Summary:
  662. //     Finds a certain text with some parameters for find.
  663. // Parameters:
  664. //     szText           : [in] Pointer to a text string to be found.
  665. //     bMatchWholeWord  : [in] Find text matching the whole word.
  666. //     bMatchCase       : [in] Try to match case.
  667. //     bSearchDown      : [in] TRUE for searching downward.
  668. //     bRedraw          : [in] TRUE for redraw control after search.
  669. //     nStartRow        : [in] The row number to start search. Value -1 means start from current row.
  670. //     nStartCol        : [in] The column number to start search. Value -1 means start from current column.
  671. // Returns:
  672. //     TRUE if found, FALSE if not
  673. //-----------------------------------------------------------------------
  674. BOOL Find(LPCTSTR szText, BOOL bMatchWholeWord, BOOL bMatchCase, BOOL bSearchDown,BOOL bRedraw = TRUE,
  675.   int nStartRow = -1, int nStartCol = -1);
  676. //-----------------------------------------------------------------------
  677. // Summary:
  678. //      Selects a text bounded by given coordinates.
  679. // Parameters:
  680. //      nRow1 - Start row of the text.
  681. //      nCol1 - Start visible column (character) of the text.
  682. //      nRow2 - End row of the text.
  683. //      nCol2 - End visible column (character) of the text.
  684. //      bRedraw - TRUE for redraw control after search.
  685. // Returns:
  686. //      TRUE if found, FALSE if not.
  687. //-----------------------------------------------------------------------
  688. BOOL Select(int nRow1, int nDispCol1, int nRow2, int nDispCol2, BOOL bRedraw = TRUE);
  689. //-----------------------------------------------------------------------
  690. // Summary:
  691. //     Cancels the previously selected rectangle area.
  692. // See also:
  693. //     void SetCurSel(int iRow1, int iCol1, int iRow2, int iCol2)
  694. //-----------------------------------------------------------------------
  695. void Unselect();
  696. //-----------------------------------------------------------------------
  697. // Summary:
  698. //      Use this operator to copy control settings from other control.
  699. // Parameters:
  700. //      src - A source syntax edit control.
  701. // Returns:
  702. //      A reference to this object.
  703. //-----------------------------------------------------------------------
  704. const CXTPSyntaxEditCtrl& operator=(const CXTPSyntaxEditCtrl& src);
  705. //-----------------------------------------------------------------------
  706. // Summary:
  707. //      Restores cursor, used mainly while changing font.
  708. //-----------------------------------------------------------------------
  709. void RestoreCursor();
  710. //-----------------------------------------------------------------------
  711. // Summary:
  712. //      Turns on/off overwrite mode.
  713. // Parameters:
  714. //      bOverwriteMode : [in] TRUE if INS is off, FALSE otherwise.
  715. //-----------------------------------------------------------------------
  716. void SetOverwriteMode(BOOL bOverwriteMode);
  717. //-----------------------------------------------------------------------
  718. // Summary:
  719. //      Sets caret for overwrite mode.
  720. // Parameters:
  721. //      bWideCaret: [in] TRUE if thin caret, FALSE otherwise.
  722. //      bUpdateReg: [in] Set this parameter as TRUE to update this setting
  723. //                       in the registry. It is FALSE by default.
  724. //-----------------------------------------------------------------------
  725. BOOL SetWideCaret(BOOL bWideCaret, BOOL bUpdateReg = FALSE);
  726. //-----------------------------------------------------------------------
  727. // Summary:
  728. //      Determines if thin caret is set for overwrite mode.
  729. // Returns:
  730. //      Boolean flag. TRUE if set, FALSE otherwise.
  731. //-----------------------------------------------------------------------
  732. BOOL GetWideCaret() const;
  733. //-----------------------------------------------------------------------
  734. // Summary:
  735. //      Determines is the caret visible or not.
  736. // Returns:
  737. //      TRUE if caret is hidden, FALSE otherwise.
  738. //-----------------------------------------------------------------------
  739. BOOL IsHideCaret();
  740. //-----------------------------------------------------------------------
  741. // Summary:
  742. //      Used to hide or show caret.
  743. // Remarks:
  744. //      May be useful to hide caret in the read-only mode.
  745. //-----------------------------------------------------------------------
  746. void SetHideCaret(BOOL bHide);
  747. //-----------------------------------------------------------------------
  748. // Summary:
  749. //      Selects the surrounding word of the point specified.
  750. // Parameters:
  751. //      point : [in] A point about which a word will be searched.
  752. //-----------------------------------------------------------------------
  753. void SelectWord(CPoint point);
  754. //-----------------------------------------------------------------------
  755. // Summary:
  756. //      Sets the current caret position to the specified row and col.
  757. // Parameters:
  758. //          nTextRow        : [in] The text row number for the current
  759. //                                  caret position.
  760. //          nDispCol        : [in] The col for the current caret position.
  761. //          bRowColNotify   : [in] Pass TRUE to send XTP_EDIT_NM_ROWCOLCHANGED
  762. //                            notification, FALSE otherwise.
  763. //          bEnsureVisible  : [in] Pass true if the set row col should be
  764. //                            forcefully made visible.
  765. //-----------------------------------------------------------------------
  766. void SetCurCaretPos(int nTextRow, int nDispCol, BOOL bRowColNotify = TRUE, BOOL bEnsureVisible = TRUE);
  767. //-----------------------------------------------------------------------
  768. // Summary:
  769. //      Returns a buffer manager which maintains a buffer of a smart edit
  770. //      control.
  771. // Returns:
  772. //      Pointer to the CXTPSyntaxEditBufferManager object.
  773. //-----------------------------------------------------------------------
  774. CXTPSyntaxEditBufferManager* GetEditBuffer();
  775. //-----------------------------------------------------------------------
  776. // Summary:
  777. //      Use this method to get associated configuration manager.
  778. // Returns:
  779. //      Returns pointer to configuration manager.
  780. //-----------------------------------------------------------------------
  781. CXTPSyntaxEditConfigurationManager* GetLexConfigurationManager() const;
  782. //-----------------------------------------------------------------------
  783. // Summary:
  784. //      Use this method to get paint manager object.
  785. // Returns:
  786. //      Returns pointer to associated CXTPSyntaxEditPaintManager object.
  787. //-----------------------------------------------------------------------
  788. virtual CXTPSyntaxEditPaintManager* GetPaintManager();
  789. //-----------------------------------------------------------------------
  790. // Summary:
  791. //      Use this method to sett paint manager object.
  792. // Parameters:
  793. //      pPaintManager : [in] A pointer CXTPSyntaxEditPaintManager object.
  794. //-----------------------------------------------------------------------
  795. virtual void SetPaintManager(CXTPSyntaxEditPaintManager* pPaintManager);
  796. //-----------------------------------------------------------------------
  797. // Summary:
  798. //      Use this method to get draw text processor object.
  799. // Returns:
  800. //      Returns pointer to CXTPSyntaxEditDrawTextProcessor object.
  801. //-----------------------------------------------------------------------
  802. CXTPSyntaxEditDrawTextProcessor& GetDrawTextProcessor();
  803. //-----------------------------------------------------------------------
  804. // Summary:
  805. //      Inserts a string at specified row and col.
  806. // Parameters:
  807. //      szText : [in] A pointer to a text string to be inserted.
  808. //      iRow   : [in] A row identifier where text will be inserted.
  809. //      iCol   : [in] A column identifier where text will be inserted.
  810. //      bDeleteSelection : [in] If TRUE selected text will be deleted at insertion.
  811. //                              Default is TRUE.
  812. //      bRedraw : [in] If TRUE document will be redrawn.
  813. //-----------------------------------------------------------------------
  814. void InsertString(LPCTSTR szText, int iRow, int iCol, BOOL bDeleteSelection = TRUE);
  815. //-----------------------------------------------------------------------
  816. // Summary:
  817. //      Inserts a vertical text block at specified row and col.
  818. // Parameters:
  819. //      szText : [in] A pointer to a text string to be inserted.
  820. //      iRow   : [in] A row identifier where text will be inserted.
  821. //      iCol   : [in] A column identifier where text will be inserted.
  822. //      bDeleteSelection : [in] If TRUE selected text will be deleted at insertion.
  823. //                              Default is TRUE.
  824. //      bRedraw : [in] If TRUE document will be redrawn.
  825. //-----------------------------------------------------------------------
  826. void InsertTextBlock(LPCTSTR szText, int iRow, int iCol, BOOL bDeleteSelection = TRUE);
  827. //--------------------------------------------------------------------
  828. // Summary:
  829. //      Returns main configuration file name.
  830. // Remarks:
  831. //      Return configuration file name previously stored by SetConfigFile().
  832. // Returns:
  833. //      CString object contains main configuration file name.
  834. // See also:
  835. //      CXTPSyntaxEditCtrl::SetConfigFile().
  836. //--------------------------------------------------------------------
  837. CString GetConfigFile();
  838. //-----------------------------------------------------------------------
  839. // Summary:
  840. //      Returns a path of the executable file module.
  841. // Returns:
  842. //      CString objects with path.
  843. //-----------------------------------------------------------------------
  844. static CString AFX_CDECL GetModulePath();
  845. //-----------------------------------------------------------------------
  846. // Summary:
  847. //      Sets the path to the main configuration file.
  848. // Parameters:
  849. //      szPath : [in] A pointer to a string containing a valid path for
  850. //                      searching the control's .ini files.
  851. // Remarks:
  852. //      Configuration will be reloaded.
  853. // Returns:
  854. //      TRUE if path is found, FALSE otherwise
  855. // See also:
  856. //      CXTPSyntaxEditCtrl::GetConfigFile().
  857. //-----------------------------------------------------------------------
  858. BOOL SetConfigFile(LPCTSTR szPath);
  859. //-----------------------------------------------------------------------
  860. // Summary:
  861. //      Creates and applies the font for the edit control
  862. // Parameters:
  863. //      pLogFont    : [in] A pointer to LOGFONT structure.
  864. //      bUpdateReg  : [in] Set this parameter as TRUE to update this setting
  865. //                         in the registry. It is FALSE by default.
  866. //-----------------------------------------------------------------------
  867. void SetFontIndirect(LPLOGFONT pLogfont, BOOL bUpdateReg=FALSE);
  868. //-----------------------------------------------------------------------
  869. // Summary:
  870. //      Sets the current cursor position to the specified row and col.
  871. // Parameters:
  872. //      iRow    : [in] A Row to set as the current cursor position document
  873. //                     coordinates.
  874. //      iCol    : [in] A Col to set as the current cursor position in
  875. //                      document coordinates.
  876. //      bRemainSelected : [in] FALSE determines to unselect the selected text.
  877. //      bForceVisible   : [in] Set TRUE to make current pos visible.
  878. // See also:
  879. //      int GetCurCol(), int GetCurRow()
  880. //-----------------------------------------------------------------------
  881. void SetCurPos(int nTextRow, int nDispCol, BOOL bRemainSelected = FALSE, BOOL bForceVisible = TRUE);
  882. //-----------------------------------------------------------------------
  883. // Summary:
  884. //      Returns the current column.
  885. // Returns:
  886. //      An integer value of current document column identifier.
  887. //-----------------------------------------------------------------------
  888. int GetCurCol();
  889. //-----------------------------------------------------------------------
  890. // Summary:
  891. //      Returns the current document row
  892. // Returns:
  893. //      An integer value of current document row identifier.
  894. //-----------------------------------------------------------------------
  895. int GetCurRow() const;
  896. //-----------------------------------------------------------------------
  897. // Summary:
  898. //      Returns the number of rows in the current document.
  899. // Returns:
  900. //      Number of rows in the document.
  901. //-----------------------------------------------------------------------
  902. int GetRowCount() const;
  903. //-----------------------------------------------------------------------
  904. // Summary:
  905. //      Selects all the text.
  906. //-----------------------------------------------------------------------
  907. void SelectAll();
  908. //-----------------------------------------------------------------------
  909. // Summary:
  910. //-----------------------------------------------------------------------
  911. // Summary:
  912. //      This method used to draw the edit control client area.
  913. // Parameters:
  914. //      pDC     : [in] A pointer to device context to print.
  915. //      rcRect  : [in] A rectangle to draw control.
  916. // See Also: PrintPage
  917. //-----------------------------------------------------------------------
  918. virtual void Draw(CDC *pDC, const CRect& rcRect);
  919. //-----------------------------------------------------------------------
  920. // Summary:
  921. //      This method used to print the edit control page.
  922. // Parameters:
  923. //      pDC     : [in] A pointer to device context to print.
  924. //      rcRect  : [in] A rectangle to draw control.
  925. //      nFlags  : [in] Additional printing options. The folowing are supported:
  926. //                     DT_CALCRECT, DT_SINGLELINE, DT_WORDBREAK
  927. // Remarks:
  928. //      The TopRow is used as the first page line.
  929. // Returns:
  930. //      Returns count of the printed rows.
  931. // See Also: Draw
  932. //-----------------------------------------------------------------------
  933. virtual int PrintPage(CDC *pDC, const CRect& rcRect, int nFlags = 0);
  934. //-----------------------------------------------------------------------
  935. // Summary:
  936. //      This method used to calculate the edit control regions.
  937. // Parameters:
  938. //      prcBookMarks : [out] A pointer to CRect object to receive a Bookmarks
  939. //                           area rectangle. May be NULL.
  940. //      prcLineNum   : [out] A pointer to CRect object to receive a Line Numbers
  941. //                           area rectangle. May be NULL.
  942. //      prcNodes     : [out] A pointer to CRect object to receive a Line Nodes
  943. //                           area rectangle. May be NULL.
  944. //      prcText      : [out] A pointer to CRect object to receive a Text
  945. //                           area rectangle. May be NULL.
  946. //      prcClient    : [in] A pointer to CRect object which contains a base edit
  947. //                          control rectangle to calculate other rectangles.
  948. //                          Pass NULL to use edit control's window client rect.
  949. // Remarks:
  950. //      For invisible(diabled) areas - the empty rectangles returned.
  951. // Returns:
  952. //      Returns a base rectangle for which other rectangless where calculated
  953. //      (this is a window client rect or value from prcClient parameter).
  954. //-----------------------------------------------------------------------
  955. virtual CRect CalcEditRects(CRect* prcBookMarks = NULL, CRect* prcLineNum = NULL,
  956. CRect* prcNodes = NULL, CRect* prcText = NULL,
  957. const CRect* prcClient = NULL);
  958. //-----------------------------------------------------------------------
  959. // Summary:
  960. //      Returns boolean selection existence flag.
  961. // Returns:
  962. //      TRUE if selection exist, FALSE otherwise.
  963. //-----------------------------------------------------------------------
  964. BOOL IsSelectionExist();
  965. //-----------------------------------------------------------------------
  966. // Summary:
  967. //      Call this member function to paste from clipboard to the current
  968. //      document.
  969. //-----------------------------------------------------------------------
  970. void Paste();
  971. //-----------------------------------------------------------------------
  972. // Summary:
  973. //      Copies the selected text to clipboard.
  974. //-----------------------------------------------------------------------
  975. void Copy();
  976. //-----------------------------------------------------------------------
  977. // Summary:
  978. //      Copies the selected text to clipboard and deletes it from document.
  979. //-----------------------------------------------------------------------
  980. void Cut();
  981. //-----------------------------------------------------------------------
  982. // Summary:
  983. //      Returns flag which determines if Redo can be made.
  984. // Remarks:
  985. //      Call this member function to determine if redo can be made.
  986. // Returns:
  987. //      TRUE if redo can be made, FALSE otherwise.
  988. // See also:
  989. //      BOOL Redo(int nActionsCount = 1);
  990. //-----------------------------------------------------------------------
  991. BOOL CanRedo();
  992. //-----------------------------------------------------------------------
  993. // Summary:
  994. //      Returns flag which determines if Undo can be made.
  995. // Remarks:
  996. //      Call this member function to determine if undo can be made.
  997. // Returns:
  998. //      TRUE if any undo action pending, FALSE otherwise
  999. // See also:
  1000. //      BOOL Undo(int nActionsCount = 1);
  1001. //-----------------------------------------------------------------------
  1002. BOOL CanUndo();
  1003. //-----------------------------------------------------------------------
  1004. // Summary:
  1005. //      Re-does the last undone operation.
  1006. // Parameters:
  1007. //      nActionsCount : [in] Specifies the number of actions to be redone
  1008. //                              simultaneously.
  1009. // Returns:
  1010. //      TRUE if success, FALSE otherwise.
  1011. // See also:
  1012. //      BOOL CanRedo();
  1013. //-----------------------------------------------------------------------
  1014. BOOL Redo(int nActionsCount = 1);
  1015. //-----------------------------------------------------------------------
  1016. // Summary:
  1017. //      Un-does the current action.
  1018. // Parameters:
  1019. //      nActionsCount : [in] Specifies the number of actions to be undone
  1020. //                          simultaneously.
  1021. // Returns:
  1022. //      TRUE if success, FALSE otherwise.
  1023. // See also:
  1024. //      BOOL CanUndo();
  1025. //-----------------------------------------------------------------------
  1026. BOOL Undo(int nActionsCount = 1);
  1027. //-----------------------------------------------------------------------
  1028. // Summary:
  1029. //      Returns the list of text for undo operations.
  1030. // Returns:
  1031. //      A reference to CStringList with strings of text for undo.
  1032. //-----------------------------------------------------------------------
  1033. const CStringList& GetUndoTextList();
  1034. //-----------------------------------------------------------------------
  1035. // Summary:
  1036. //      Returns the list of text for redo operations.
  1037. // Returns:
  1038. //      A reference to CStringList with strings of text for redo.
  1039. //-----------------------------------------------------------------------
  1040. const CStringList& GetRedoTextList();
  1041. //-----------------------------------------------------------------------
  1042. // Summary:
  1043. //      Deletes a character at specified location.
  1044. // Parameters:
  1045. //      iRow : [in] A row identifier in document coordinates.
  1046. //      iCol : [in] A column identifier in document coordinates.
  1047. //      pos  : [in] A position qualifier.
  1048. // Returns:
  1049. //      TRUE if deleted, FALSE otherwise;
  1050. // See also:
  1051. //      XTPSyntaxEditDeletePos enum.
  1052. //-----------------------------------------------------------------------
  1053. BOOL DeleteChar(int iRow, int iCol, XTPSyntaxEditDeletePos pos);
  1054. //-----------------------------------------------------------------------
  1055. // Summary:
  1056. //      Deletes a given range of text.
  1057. // Parameters:
  1058. //      iRowFrom    : [in] Specifies start row in document coordinates.
  1059. //      iColFrom    : [in] Specifies start col in document coordinates.
  1060. //      iRowTo      : [in] Specifies end row in document coordinates.
  1061. //      iColTo      : [in] Specifies end col in document coordinates.
  1062. //      nFlags      : [in] mode flag, possible values : smfRedraw,
  1063. //                          smfForceRedraw, smfTextAsBlock.
  1064. // Returns:
  1065. //      TRUE if deleted, FALSE otherwise.
  1066. // See also:
  1067. //      enum XTPSyntaxEditFlags.
  1068. //-----------------------------------------------------------------------
  1069. BOOL DeleteBuffer(int iRowFrom, int iColFrom, int iRowTo, int iColTo, int nFlags = 0);
  1070. //-----------------------------------------------------------------------
  1071. // Summary:
  1072. //      Deletes the currently selected text.
  1073. // Parameters:
  1074. //      bRedraw : [in] If TRUE document should be redrawn. Default value
  1075. //                      is TRUE.
  1076. // Returns:
  1077. //      TRUE if deleted, FALSE otherwise.
  1078. //-----------------------------------------------------------------------
  1079. BOOL DeleteSelection();
  1080. //-----------------------------------------------------------------------
  1081. // Summary:
  1082. //      Use this method to get editor text.
  1083. // Parameters:
  1084. //      nMaxLen : [in] The maximum text length to get (in TCHARs). Set as -1
  1085. //                     to get all text. Default value -1.
  1086. //      memFile : [out] A reference to CMemFile object to receive a text.
  1087. // Remarks:
  1088. //      Also CWnd::GetWindowText can be used to get editor text.
  1089. // Returns:
  1090. //      First function returns a CString object wich contains an editor text
  1091. //      (or empty string).
  1092. //      Second function returns TRUE if succeeded, FALSE otherwise.
  1093. // See Also: SetText, CWnd::SetWindowText
  1094. //-----------------------------------------------------------------------
  1095. virtual CString GetText(int nMaxLen = -1);
  1096. virtual BOOL GetText(CMemFile& memFile, int nMaxLen = -1); //<COMBINE GetText@int>
  1097. //-----------------------------------------------------------------------
  1098. // Summary:
  1099. //      Use this method to set editor text.
  1100. // Parameters:
  1101. //      pcszText : [in] Pointer to a text string.
  1102. // Remarks:
  1103. //      Also CWnd::SetWindowText can be used to set editor text.
  1104. // See Also: GetText, CWnd::GetWindowText
  1105. //-----------------------------------------------------------------------
  1106. virtual void SetText(LPCTSTR pcszText);
  1107. //-----------------------------------------------------------------------
  1108. // Summary:
  1109. //      Set the top row of the visible window.
  1110. // Parameters:
  1111. //      iRow : [in] An identifier of the top visible row in document
  1112. //                  coordinates.
  1113. // See also:
  1114. //      int GetTopRow();
  1115. //-----------------------------------------------------------------------
  1116. void SetTopRow(int iRow);
  1117. //-----------------------------------------------------------------------
  1118. // Summary:
  1119. //      Returns top row identifier.
  1120. // Returns:
  1121. //      An integer value of the current top row identifier.
  1122. // See also:
  1123. //      SetTopRow(int iRow);
  1124. //-----------------------------------------------------------------------
  1125. int GetTopRow();
  1126. //-----------------------------------------------------------------------
  1127. // Summary:
  1128. //      Recalculates and set the scroll bars and other related areas
  1129. //      depending on the text size and current position.
  1130. //-----------------------------------------------------------------------
  1131. void RecalcScrollBars();
  1132. //-----------------------------------------------------------------------
  1133. // Summary: Repositions and resizes control bars in the client area of a
  1134. //          window.
  1135. // Parameters:
  1136. //      nIDFirst     : [in] The ID of the first in a range of control bars
  1137. //                          to reposition and resize.
  1138. //      nIDLast      : [in] The ID of the last in a range of control bars
  1139. //                          to reposition and resize.
  1140. //      nIDLeftOver  : [in] Specifies ID of pane that fills the rest of the
  1141. //                          client area.
  1142. //      nFlag        : [in] Can have one of the following values:
  1143. //                          [ul]
  1144. //                          [li]CWnd::reposDefault - Performs the layout of
  1145. //                              the control bars. lpRectParam is not used and
  1146. //                              can be NULL.[/li]
  1147. //                          [li]CWnd::reposQuery - The layout of the control
  1148. //                              bars is not done; instead lpRectParam is
  1149. //                              initialized with the size of the client area,
  1150. //                              as if the layout had actually been done.[/li]
  1151. //                          [li]CWnd::reposExtra   Adds the values of lpRectParam
  1152. //                              to the client area of nIDLast and also performs
  1153. //                              the layout.[/li]
  1154. //                          [/ul]
  1155. //      lpRectParam  : [in] Points to a RECT structure; the usage of which
  1156. //                          depends on the value of nFlag.
  1157. //      lpRectClient : [in] Points to a RECT structure containing the available
  1158. //                          client area. If NULL, the window's client area will
  1159. //                          be used.
  1160. //      bStretch     : [in] Indicates whether the bar should be stretched to
  1161. //                          the size of the frame.
  1162. // Remarks: The nIDFirst and nIDLast parameters define a range of control-bar
  1163. //          IDs to be repositioned in the client area. The nIDLeftOver parameter
  1164. //          specifies the ID of the child window (normally the view) which
  1165. //          is repositioned and resized to fill the rest of the client area
  1166. //          not filled by control bars.
  1167. //-----------------------------------------------------------------------
  1168. void RepositionBars(UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver, UINT nFlag = CWnd::reposDefault, LPRECT lpRectParam = NULL, LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);
  1169. //-----------------------------------------------------------------------
  1170. // Summary:
  1171. //      Return pointer to the specified CScrollBar object.
  1172. // Parameters:
  1173. //      nBar : [in] Specifies the type of scroll bar. The parameter can take
  1174. //                  one of the following values:
  1175. //                  [ul]
  1176. //                  [li]SB_HORZ - Retrieves the position of the horizontal scroll bar[/li]
  1177. //                  [li]SB_VERT - Retrieves the position of the vertical scroll bar[/li]
  1178. //                  [/ul]
  1179. // Remarks:
  1180. //      Call this member function to obtain a pointer to the specified sibling
  1181. //      scroll bar. This member function does not operate on scroll bars created
  1182. //      when the WS_HSCROLL or WS_VSCROLL bits are set during the creation
  1183. //      of a window. The CWnd implementation of this function simply returns
  1184. //      NULL. Derived classes, such as CView, implement the described
  1185. //      functionality.
  1186. // Returns:
  1187. //      A pointer to sibling scroll-bar control, or NULL if none.
  1188. //-----------------------------------------------------------------------
  1189. virtual CScrollBar* GetScrollBarCtrl( int nBar ) const;
  1190. //-----------------------------------------------------------------------
  1191. // Summary:
  1192. //      Enables or disables the scroll bar.
  1193. // Parameters:
  1194. //      nBar    : [in] The scroll-bar identifier.
  1195. //      bEnable : [in] Specifies whether the scroll bar is to be enabled
  1196. //                    or disabled.
  1197. // Remarks:
  1198. //      If the window has a sibling scroll-bar control, that scroll bar
  1199. //      is used; otherwise the window's own scroll bar is used.
  1200. // See also:
  1201. //      void ShowScrollBar(UINT nBar, BOOL bShow = TRUE );
  1202. //-----------------------------------------------------------------------
  1203. void EnableScrollBarCtrl(int nBar, BOOL bEnable = TRUE );
  1204. //-----------------------------------------------------------------------
  1205. // Summary:
  1206. //      Shows or hides a scroll bar.
  1207. // Parameters:
  1208. //      nBar : [in] Specifies whether the scroll bar is a control or part
  1209. //                  of a window's non-client area. If it is part of the
  1210. //                  non-client area, nBar also indicates whether the scroll
  1211. //                  bar is positioned horizontally, vertically, or both.
  1212. //                  It must be one of the following:
  1213. //                  [ul]
  1214. //                  [li]SB_BOTH - Specifies the horizontal and vertical
  1215. //                      scroll bars of the window.[/li]
  1216. //                  [li]SB_HORZ - Specifies that the window is a horizontal
  1217. //                      scroll bar.[/li]
  1218. //                  [li]SB_VERT - Specifies that the window is a vertical
  1219. //                      scroll bar.[/li]
  1220. //      bShow: [in] Specifies whether Windows shows or hides the scroll bar.
  1221. //                  If this parameter is TRUE, the scroll bar is shown;
  1222. //                  otherwise the scroll bar is hidden.
  1223. // Remarks:
  1224. //      An application should not call ShowScrollBar to hide a scroll
  1225. //      bar while processing a scroll-bar notification message.
  1226. // See also:
  1227. //          void EnableScrollBarCtrl( int nBar, BOOL bEnable = TRUE );
  1228. //-----------------------------------------------------------------------
  1229. void ShowScrollBar(UINT nBar, BOOL bShow = TRUE );
  1230. //-----------------------------------------------------------------------
  1231. // Summary:
  1232. //      Sets minimum and maximum position values for the given scroll bar.
  1233. // Parameters:
  1234. //      nBar    : [in] Specifies the scroll bar to be set. This parameter
  1235. //                      can be either of the following values:
  1236. //                      [ul]
  1237. //                      [li]SB_HORZ - Sets the range of the horizontal scroll
  1238. //                                      bar of the window.[/li]
  1239. //                      [li]SB_VERT - Sets the range of the vertical scroll
  1240. //                                      bar of the window.[/li]
  1241. //                      [/ul]
  1242. //      nMinPos : [in] Specifies the minimum scrolling position.
  1243. //      nMaxPos : [in] Specifies the maximum scrolling position.
  1244. //      bRedraw : [in] Specifies whether the scroll bar should be redrawn to
  1245. //                      reflect the change. If bRedraw is TRUE, the scroll bar
  1246. //                      is redrawn; if FALSE, the scroll bar is not redrawn.
  1247. // Remarks: It can also be used to hide or show standard scroll bars.
  1248. //
  1249. //          An application should not call this function to hide a scroll
  1250. //          bar while processing a scroll-bar notification message.
  1251. //
  1252. //          If the call to SetScrollRange immediately follows a call to
  1253. //          the SetScrollPos member function, the bRedraw parameter in the
  1254. //          SetScrollPos member function should be 0 to prevent the scroll
  1255. //          bar from being drawn twice.
  1256. //
  1257. //          The default range for a standard scroll bar is 0 through 100.
  1258. //          The default range for a scroll bar control is empty (both the
  1259. //          nMinPos and nMaxPos values are 0). The difference between the
  1260. //          values specified by nMinPos and nMaxPos must not be greater
  1261. //          than INT_MAX.
  1262. //-----------------------------------------------------------------------
  1263. void SetScrollRange( int nBar, int nMinPos, int nMaxPos, BOOL bRedraw = TRUE );
  1264. //-----------------------------------------------------------------------
  1265. // Summary:
  1266. //      Sets the current position of a scroll box and, if requested, redraws
  1267. //      the scroll bar to reflect the new position of the scroll box
  1268. // Parameters:
  1269. //      nBar    : [in] Specifies the scroll bar to be set. This parameter
  1270. //                      can be either of the following:
  1271. //                      [ul]
  1272. //                      [li]SB_HORZ - Sets the position of the scroll box
  1273. //                                      in the horizontal scroll bar of the
  1274. //                                      window.[/li]
  1275. //                      [li]SB_VERT - Sets the position of the scroll box in
  1276. //                                      the vertical scroll bar of the
  1277. //                                      window.[/li]
  1278. //                      [/ul]
  1279. //      nPos    : [in] Specifies the new position of the scroll box. It must
  1280. //                      be within the scrolling range.
  1281. //      bRedraw : [in] Specifies whether the scroll bar should be repainted
  1282. //                      to reflect the new scroll-box position. If this parameter
  1283. //                      is TRUE, the scroll bar is repainted; if FALSE, the
  1284. //                      scroll bar is not repainted.
  1285. // Remarks:
  1286. //      Setting bRedraw to FALSE is useful whenever the scroll bar will
  1287. //      be redrawn by a subsequent call to another function.
  1288. // Returns:
  1289. //      The previous position of the scroll box.
  1290. //-----------------------------------------------------------------------
  1291. int SetScrollPos( int nBar, int nPos, BOOL bRedraw = TRUE );
  1292. //-----------------------------------------------------------------------
  1293. // Summary:
  1294. //      Sets the information that the SCROLLINFO structure maintains about
  1295. //      a scroll bar.
  1296. // Parameters:
  1297. //      nBar         : [in] Specifies the scroll bar to be set. This parameter
  1298. //                          can be either of the following:
  1299. //                          [ul]
  1300. //                          [li]SB_HORZ - Sets the position of the scroll box
  1301. //                             in the horizontal scroll bar of the window.[/li]
  1302. //                          [li]SB_VERT   Sets the position of the scroll box in
  1303. //                             the vertical scroll bar of the window.[/li]
  1304. //                          [/ul]
  1305. //      lpScrollInfo : [in] A pointer to a SCROLLINFO structure.
  1306. //      bRedraw      : [in] Specifies whether the scroll bar should be redrawn
  1307. //                          to reflect the new information. If bRedraw is TRUE,
  1308. //                          the scroll bar is redrawn. If it is FALSE, it is
  1309. //                          not redrawn. The scroll bar is redrawn by default.
  1310. // Remarks:
  1311. //      You must provide the values required by the SCROLLINFO structure
  1312. //      parameters, including the flag values.
  1313. //
  1314. //      The SCROLLINFO structure contains information about a scroll bar,
  1315. //      including the minimum and maximum scrolling positions, the page
  1316. //      size, and the position of the scroll box (the thumb). See the
  1317. //      SCROLLINFO structure topic in the Platform SDK for more information
  1318. //      about changing the structure defaults.
  1319. // Returns:
  1320. //      If successful, the return is TRUE. Otherwise, it is FALSE.
  1321. // See also:
  1322. //     BOOL GetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL )
  1323. //     int GetScrollLimit( int nBar )
  1324. //-----------------------------------------------------------------------
  1325. BOOL SetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE );
  1326. //-----------------------------------------------------------------------
  1327. // Summary:
  1328. //      Returns max scroll position identifier.
  1329. // Parameters:
  1330. //      nBar : [in] Specifies the type of scroll bar. The parameter can take
  1331. //                  one of the following values:
  1332. //                  [ul]
  1333. //                  [li]SB_HORZ - Retrieves the scroll limit of the horizontal
  1334. //                     scroll bar.[/li]
  1335. //                  [li]SB_VERT   Retrieves the scroll limit of the vertical
  1336. //                     scroll bar.[/li]
  1337. //                  [/ul]
  1338. // Remarks:
  1339. //      Call this member function to retrieve the maximum scrolling
  1340. //      position of the scroll bar.
  1341. // Returns:
  1342. //      An  integer value which specifies the maximum position of a scroll
  1343. //      bar if successful; otherwise 0.
  1344. //-----------------------------------------------------------------------
  1345. int GetScrollLimit( int nBar );
  1346. //-----------------------------------------------------------------------
  1347. // Summary: Retrieves the scrollbar information
  1348. // Parameters:
  1349. //      nBar         : [in] Specifies whether the scroll bar is a control
  1350. //                         or part of a window's non-client area. If it is
  1351. //                         part of the non-client area, nBar also indicates
  1352. //                         whether the scroll bar is positioned horizontally,
  1353. //                         vertically, or both. It must be one of the following:
  1354. //                         [ul]
  1355. //                         [li]SB_CTL - Contains the parameters for a scroll
  1356. //                             bar control. The m_hWnd data member must be
  1357. //                             the handle of the scroll bar control.[/li]
  1358. //                         [li]SB_HORZ - Specifies that the window is a
  1359. //                             horizontal scroll bar.[/li]
  1360. //                         [li]SB_VERT   Specifies that the window is a
  1361. //                             vertical scroll bar.
  1362. //      lpScrollInfo : [out] A pointer to a SCROLLINFO structure. See the
  1363. //                         Platform SDK for more information about this
  1364. //                         structure.
  1365. //      nMask        : [in] Specifies the scroll bar parameters to retrieve.
  1366. //                         The default specifies a combination of SIF_PAGE,
  1367. //                         SIF_POS, SIF_TRACKPOS, and SIF_RANGE. See SCROLLINFO
  1368. //                         for more information on the nMask values.
  1369. // Remarks:
  1370. //      Call this member function to retrieve the information that the
  1371. //      SCROLLINFO structure maintains about a scroll bar.
  1372. //      GetScrollInfo enables applications to use 32-bit scroll positions.
  1373. //
  1374. //      The SCROLLINFO structure contains information about a scroll bar,
  1375. //      including the minimum and maximum scrolling positions, the page
  1376. //      size, and the position of the scroll box (the thumb). See the
  1377. //      SCROLLINFO structure topic in the Platform SDK for more information
  1378. //      about changing the structure defaults.
  1379. //
  1380. //      The MFC Windows message handlers that indicate scroll-bar position,
  1381. //      CWnd::OnHScroll and CWnd::OnVScroll, provide only 16 bits of position
  1382. //      data. GetScrollInfo and SetScrollInfo provide 32 bits of scroll-bar
  1383. //      position data. Thus, an application can call GetScrollInfo while
  1384. //      processing either CWnd::OnHScroll or CWnd::OnVScroll to obtain 32-bit
  1385. //      scroll-bar position data.
  1386. // Returns:
  1387. //      If the message retrieved any values, the return is TRUE. Otherwise,
  1388. //      it is FALSE.
  1389. // See also:
  1390. //     BOOL SetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE );
  1391. //-----------------------------------------------------------------------
  1392. BOOL GetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL );
  1393. //-----------------------------------------------------------------------
  1394. // Summary:
  1395. //      Scrolls the specified client area with additional features.
  1396. // Parameters:
  1397. //      dx : [in] Specifies the amount, in device units, of horizontal scrolling.
  1398. //                  This parameter must have a negative value to scroll to the left.
  1399. //      dy : [in] Specifies the amount, in device units, of vertical scrolling.
  1400. //                  This parameter must have a negative value to scroll up.
  1401. //      lpRectScroll : [in] Points to a RECT structure that specifies the portion
  1402. //                          of the client area to be scrolled. If this parameter
  1403. //                          is NULL, the entire client area is scrolled.
  1404. //      lpRectClip : [in] Points to a RECT structure that specifies the clipping
  1405. //                          rectangle to scroll. This structure takes precedence
  1406. //                          over the rectangle pointed to by lpRectScroll. Only
  1407. //                          bits inside this rectangle are scrolled. Bits outside
  1408. //                          this rectangle are not affected even if they are in
  1409. //                          the lpRectScroll rectangle. If this parameter is NULL,
  1410. //                          no clipping is performed on the scroll rectangle.
  1411. //      prgnUpdate : [in] Identifies the region that is modified to hold the
  1412. //                          region invalidated by scrolling. This parameter
  1413. //                          may be NULL.
  1414. //      lpRectUpdate : [out] Points to a RECT structure that will receive the
  1415. //                          boundaries of the rectangle invalidated by scrolling.
  1416. //                          This parameter may be NULL.