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

对话框与窗口

开发平台:

Visual C++

  1. // XTPSyntaxEditStruct.h
  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(__XTPSYNTAXEDITSTRUCT_H__)
  22. #define __XTPSYNTAXEDITSTRUCT_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "Common/XTPColorManager.h"
  28. namespace XTPSyntaxEditLexAnalyser
  29. {
  30. class CXTPSyntaxEditLexTextBlock;
  31. }
  32. class CXTPSyntaxEditCtrl;
  33. //===========================================================================
  34. // max line: 1 048 575
  35. // max col:  4 095
  36. //===========================================================================
  37. #define XTP_EDIT_XLC(nL, nC) ( (((DWORD)nL) << 12) | (((DWORD)nC) & 0x00000FFF))
  38. //===========================================================================
  39. // Summary:
  40. //      XTP_EDIT_LINECOL structure represents coordinates of text items on the
  41. //      displaying context in terms of line/column.
  42. //===========================================================================
  43. struct _XTP_EXT_CLASS XTP_EDIT_LINECOL
  44. {
  45. int nLine;  // stores line identifier
  46. int nCol;   // stores column identifier
  47. static const XTP_EDIT_LINECOL MAXPOS; // maximum position value
  48. static const XTP_EDIT_LINECOL MINPOS; // minimum position value
  49. static const XTP_EDIT_LINECOL Pos1; // {1,0} position value
  50. //----------------------------------------------------------------------
  51. // Summary:
  52. //      Constructs XTP_EDIT_LINECOL from the pair of coordinates
  53. //      (line and column).
  54. // Parameters:
  55. //      nParamLine  : [in] Line identifier.
  56. //      nParamCol   : [in] Column identifier.
  57. //----------------------------------------------------------------------
  58. static const XTP_EDIT_LINECOL MakeLineCol(int nParamLine, int nParamCol);
  59. //----------------------------------------------------------------------
  60. // Summary:
  61. //      This static functions are used to get minimum or maximum of 2
  62. //      XTP_EDIT_LINECOL values.
  63. // Parameters:
  64. //      pos1  : [in] First value.
  65. //      pos2  : [in] Second value.
  66. //----------------------------------------------------------------------
  67. static const XTP_EDIT_LINECOL min2(const XTP_EDIT_LINECOL& pos1, const XTP_EDIT_LINECOL& pos2);
  68. static const XTP_EDIT_LINECOL max2(const XTP_EDIT_LINECOL& pos1, const XTP_EDIT_LINECOL& pos2); // <COMBINE XTP_EDIT_LINECOL::min2@const XTP_EDIT_LINECOL&@const XTP_EDIT_LINECOL&>
  69. //----------------------------------------------------------------------
  70. // Summary:
  71. //      Returns coordinates in the packed form.
  72. // Returns:
  73. //      DWORD value.
  74. //----------------------------------------------------------------------
  75. DWORD GetXLC() const;
  76. //----------------------------------------------------------------------
  77. // Summary:
  78. //      Returns data validation flag.
  79. // Returns:
  80. //      TRUE if line/column identifiers > 0; FALSE otherwise
  81. //----------------------------------------------------------------------
  82. BOOL IsValidData() const;
  83. //----------------------------------------------------------------------
  84. // Summary:
  85. //      Clears data members.
  86. // Remarks:
  87. //      Call this member function to set line/column coordinates to 0.
  88. //----------------------------------------------------------------------
  89. void Clear();
  90. //----------------------------------------------------------------------
  91. // Summary:
  92. //      Less than operator. Compares current struct with given.
  93. // Parameters:
  94. //      pos2 : [in] Reference to struct to compare.
  95. // Returns:
  96. //      TRUE if current struct less than given; FALSE otherwise
  97. //----------------------------------------------------------------------
  98. BOOL operator < (const XTP_EDIT_LINECOL& pos2) const;
  99. //----------------------------------------------------------------------
  100. // Summary:
  101. //      Less than or equal operator. Compares current struct with given.
  102. // Parameters:
  103. //      pos2 : [in] Reference to struct to compare.
  104. // Returns:
  105. //      TRUE if current struct less than  or equal given; FALSE otherwise
  106. //----------------------------------------------------------------------
  107. BOOL operator <= (const XTP_EDIT_LINECOL& pos2) const;
  108. //----------------------------------------------------------------------
  109. // Summary:
  110. //      Greater than operator. Compares current struct with given.
  111. // Parameters:
  112. //      pos2 : [in] Reference to struct to compare.
  113. // Returns:
  114. //      TRUE if current struct greater than given; FALSE otherwise.
  115. //----------------------------------------------------------------------
  116. BOOL operator > (const XTP_EDIT_LINECOL& pos2) const;
  117. //----------------------------------------------------------------------
  118. // Summary:
  119. //      Greater or equal operator. Compares current struct with given.
  120. // Parameters:
  121. //      pos2 : [in] Reference to struct to compare.
  122. // Returns:
  123. //      TRUE if current struct greater than  or equal given; FALSE otherwise
  124. //----------------------------------------------------------------------
  125. BOOL operator >= (const XTP_EDIT_LINECOL& pos2) const;
  126. //----------------------------------------------------------------------
  127. // Summary:
  128. //      Equal operator. Compares current struct with given.
  129. // Parameters:
  130. //      pos2 : [in] Reference to struct to compare.
  131. // Returns:
  132. //      TRUE if current struct equal given; FALSE otherwise
  133. //----------------------------------------------------------------------
  134. BOOL operator == (const XTP_EDIT_LINECOL& pos2) const;
  135. //----------------------------------------------------------------------
  136. // Summary:
  137. //      Not Equal operator. Compares current struct with given.
  138. // Parameters:
  139. //      pos2 : [in] Reference to struct to compare.
  140. // Returns:
  141. //      TRUE if current struct not equal given; FALSE otherwise
  142. //----------------------------------------------------------------------
  143. BOOL operator != (const XTP_EDIT_LINECOL& pos2) const {
  144. return !operator==(pos2);
  145. }
  146. };
  147. //===========================================================================
  148. // XTP_EDIT_COLORVALUES struct stores the colors for different phrases
  149. //===========================================================================
  150. struct _XTP_EXT_CLASS XTP_EDIT_COLORVALUES
  151. {
  152. CXTPPaintManagerColor crText;           // text color
  153. CXTPPaintManagerColor crBack;           // back color
  154. CXTPPaintManagerColor crReadOnlyBack;   // back color for read only mode
  155. CXTPPaintManagerColor crHiliteText;     // text color of selection
  156. CXTPPaintManagerColor crHiliteBack;     // text color of selection back
  157. CXTPPaintManagerColor crInactiveHiliteText;     // inactive text color of selection
  158. CXTPPaintManagerColor crInactiveHiliteBack;     // inactive text color of selection back
  159. CXTPPaintManagerColor crLineNumberText; // Line numbers text and line color
  160. CXTPPaintManagerColor crLineNumberBack; // Line numbers text and line color
  161. //-----------------------------------------------------------------------
  162. // Summary:
  163. //      Assign operator needed for working with CList.
  164. // Parameters:
  165. //      src : [in] Reference to source structure.
  166. // Returns:
  167. //      Reference to XTP_EDIT_COLORVALUES struct.
  168. //-----------------------------------------------------------------------
  169. const XTP_EDIT_COLORVALUES& operator=(const XTP_EDIT_COLORVALUES& src);
  170. //-----------------------------------------------------------------------
  171. // Summary: Get corresponding background color for edit mode or for
  172. //          read-only mode (crBack or crReadOnlyBack member value).
  173. // Returns: Background color.
  174. // See Also: crBack, crReadOnlyBack
  175. //-----------------------------------------------------------------------
  176. COLORREF GetBackColorEx(CXTPSyntaxEditCtrl* pEditCtrl);
  177. };
  178. //===========================================================================
  179. // XTP_EDIT_ROWSBLOCK struct
  180. //===========================================================================
  181. struct _XTP_EXT_CLASS XTP_EDIT_ROWSBLOCK
  182. {
  183. XTP_EDIT_LINECOL lcStart;  // Start position.
  184. XTP_EDIT_LINECOL lcEnd;    // End Position.
  185. CString strCollapsedText;   //Collapsed text.
  186. //-----------------------------------------------------------------------
  187. // Summary:
  188. //      Default destructor.Handles clean up and deallocation.
  189. //-----------------------------------------------------------------------
  190. virtual ~XTP_EDIT_ROWSBLOCK(){};
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //      Assign operator.
  194. // Parameters:
  195. //      src : [in] Reference to source structure.
  196. // Returns:
  197. //      Reference to XTP_EDIT_COLORVALUES struct.
  198. //-----------------------------------------------------------------------
  199. const XTP_EDIT_ROWSBLOCK& operator=(const XTP_EDIT_ROWSBLOCK& src);
  200. };
  201. typedef CArray<XTP_EDIT_ROWSBLOCK, const XTP_EDIT_ROWSBLOCK&> CXTPSyntaxEditRowsBlockArray;
  202. //===========================================================================
  203. // Summary:
  204. //      Stores collapsed block parameters.
  205. // See also:
  206. //      XTP_EDIT_ROWSBLOCK
  207. //===========================================================================
  208. struct _XTP_EXT_CLASS XTP_EDIT_COLLAPSEDBLOCK
  209. {
  210. XTP_EDIT_ROWSBLOCK collBlock;      // Collapsed block parameters
  211. CRect        rcCollMark;    // Rectangle area to display collapsed block
  212.                             // mark.
  213. //-----------------------------------------------------------------------
  214. // Summary:
  215. //      Default destructor.Handles clean up and deallocation.
  216. //-----------------------------------------------------------------------
  217. virtual ~XTP_EDIT_COLLAPSEDBLOCK(){};
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //      Assign operator.
  221. // Parameters:
  222. //      src : [in] Reference to source structure.
  223. // Returns:
  224. //      Reference to XTP_EDIT_COLORVALUES struct.
  225. //-----------------------------------------------------------------------
  226. const XTP_EDIT_COLLAPSEDBLOCK& operator=(const XTP_EDIT_COLLAPSEDBLOCK& src);
  227. };
  228. const UINT XTP_EDIT_ROWNODE_NOTHING    = 0x00;  // Define that row has no node mark.
  229. const UINT XTP_EDIT_ROWNODE_COLLAPSED  = 0x01;  // Define that row has collapsed node mark.
  230. const UINT XTP_EDIT_ROWNODE_EXPANDED   = 0x02;  // Define that row has expanded node mark.
  231. const UINT XTP_EDIT_ROWNODE_ENDMARK    = 0x04;  // Define that row has end node mark.
  232. const UINT XTP_EDIT_ROWNODE_NODEUP     = 0x10;  // Define that row has up-line node mark.
  233. const UINT XTP_EDIT_ROWNODE_NODEDOWN   = 0x20;  // Define that row has down-line node mark.
  234. //===========================================================================
  235. // Summary:
  236. //      Used with XTP_EDIT_FONTOPTIONS struct and define unspecified member value.
  237. // See Also: XTP_EDIT_FONTOPTIONS
  238. //===========================================================================
  239. #define XTP_EDIT_FONTOPTIONS_UNSPEC_OPTION (BYTE)-1
  240. //===========================================================================
  241. // XTP_EDIT_FONTOPTIONS struct is a self initializing LOGFONT structure that
  242. // initializes all values equal to XTP_EDIT_FONTOPTIONS_UNSPEC_OPTION except
  243. // for lfFaceName which is set to zero length.
  244. // See Also: XTP_EDIT_FONTOPTIONS_UNSPEC_OPTION
  245. //===========================================================================
  246. struct _XTP_EXT_CLASS XTP_EDIT_FONTOPTIONS : public LOGFONT
  247. {
  248. //-----------------------------------------------------------------------
  249. // Summary:
  250. //      Default constructor.
  251. //-----------------------------------------------------------------------
  252. XTP_EDIT_FONTOPTIONS();
  253. //-----------------------------------------------------------------------
  254. // Summary:
  255. //      Assign operator.
  256. // Parameters:
  257. //      src : [in] Reference to source structure.
  258. // Returns:
  259. //      Reference to XTP_EDIT_FONTOPTIONS struct.
  260. //-----------------------------------------------------------------------
  261. const XTP_EDIT_FONTOPTIONS& operator=(const XTP_EDIT_FONTOPTIONS& src);
  262. };
  263. //===========================================================================
  264. // Summary: XTP_EDIT_TEXTBLOCK structure stores the text blocks after parsing
  265. //===========================================================================
  266. struct _XTP_EXT_CLASS XTP_EDIT_TEXTBLOCK
  267. {
  268. int             nPos;           // Position
  269. int             nNextBlockPos;  // Position for the next block
  270. XTP_EDIT_COLORVALUES   clrBlock;   // Color for this block
  271. XTP_EDIT_FONTOPTIONS  lf;// Font options for this block;
  272. //-----------------------------------------------------------------------
  273. // Summary:
  274. //      Default constructor.
  275. //-----------------------------------------------------------------------
  276. XTP_EDIT_TEXTBLOCK();
  277. //-----------------------------------------------------------------------
  278. // Summary:
  279. //      Assign operator.
  280. // Parameters:
  281. //      src : [in] Reference to source structure.
  282. // Returns:
  283. //      Reference to XTP_EDIT_TEXTBLOCK struct.
  284. //-----------------------------------------------------------------------
  285. const XTP_EDIT_TEXTBLOCK& operator=(const XTP_EDIT_TEXTBLOCK& src);
  286. };
  287. //===========================================================================
  288. // Summary: This is used to define row and col selection rect
  289. //===========================================================================
  290. struct XTP_EDIT_ROWCOLRECT
  291. {
  292. int nRow1;          // First row index for a text block.
  293. int nCol1;          // First column index for a text block.
  294. int nRow2;          // Last row index for a text block.
  295. int nCol2;          // Last column index for a text block.
  296. };
  297. //////////////////////////////
  298. // Notification structures
  299. //////////////////////////////
  300. //===========================================================================
  301. // Summary: Bookmark notification structure
  302. //          Provided as LPARAM with WM_NOTIFY while
  303. //          bookmarks are needed to be drawn
  304. //===========================================================================
  305. struct XTP_EDIT_SENMBOOKMARK
  306. {
  307. NMHDR nmhdr;        // First param should be NMHDR
  308. HDC hDC;            // HDC for drawing
  309. RECT rcBookmark;    // RECT for bookmark
  310. int nRow;           // The row number
  311. };
  312. //===========================================================================
  313. // Summary: Row column notification structure
  314. //          Provided as LPARAM with WM_NOTIFY
  315. //          This is used to display current row and column
  316. //===========================================================================
  317. struct XTP_EDIT_NMHDR_ROWCOLCHANGED
  318. {
  319. NMHDR nmhdr;    // First param should be NMHDR
  320. int nRow;       // Current document row
  321. int nCol;       // Current document col
  322. };
  323. //===========================================================================
  324. // Summary: Document notification structure
  325. //          Provided as LPARAM with WM_NOTIFY
  326. //          used to notify of a change in the document's modified state.
  327. //===========================================================================
  328. struct XTP_EDIT_NMHDR_DOCMODIFIED
  329. {
  330. NMHDR nmhdr;    // First param should be NMHDR
  331. BOOL bModified; // TRUE if the document was modified.
  332. };
  333. //===========================================================================
  334. // Summary: Structure to notify "Edit changed" event
  335. //===========================================================================
  336. struct XTP_EDIT_NMHDR_EDITCHANGED
  337. {
  338. NMHDR   nmhdr;      // First param should be NMHDR
  339. int     nRowFrom;   // The start row for the action
  340. int     nRowTo;     // The end row for the action
  341. int     nAction;    // The actual action
  342. };
  343. //===========================================================================
  344. // Summary: Structure to notify XTP_EDIT_NM_MARGINCLICKED event
  345. //===========================================================================
  346. struct XTP_EDIT_NMHDR_MARGINCLICKED
  347. {
  348. NMHDR   nmhdr;      // First param should be NMHDR
  349. int     nRow;       // Document row number
  350. int     nDispRow;   // Visible row number (start from 1);
  351. };
  352. //===========================================================================
  353. // Summary: Structure to notify XTP_EDIT_NM_UPDATESCROLLPOS event
  354. //===========================================================================
  355. struct XTP_EDIT_NMHDR_SETSCROLLPOS
  356. {
  357. NMHDR   nmhdr;      // First param should be NMHDR
  358. DWORD   dwUpdate;   // Scroll position update flags can be any combination of XTP_EDIT_UPDATE_HORZ, XTP_EDIT_UPDATE_VERT or XTP_EDIT_UPDATE_DIAG.
  359. };
  360. //===========================================================================
  361. // Summary: Structure to notify XTP_EDIT_NM_ENABLESCROLLBAR event
  362. //===========================================================================
  363. struct XTP_EDIT_NMHDR_ENABLESCROLLBAR
  364. {
  365. NMHDR   nmhdr;          // First param should be NMHDR
  366. DWORD   dwScrollBar;    // Define the scroll bar(s) to change state as WS_HSCROLL and WS_VSCROLL flags.
  367. DWORD   dwState;        // Define the scroll bar(s) state as WS_HSCROLL and WS_VSCROLL flags.
  368. };
  369. //===========================================================================
  370. // Summary: Structure to notify XTP_EDIT_NM_PARSEEVENT event
  371. //===========================================================================
  372. struct XTP_EDIT_NMHDR_PARSEEVENT
  373. {
  374. NMHDR   nmhdr;      // First param should be NMHDR
  375. DWORD   code;       // Parser event. A value from XTPSyntaxEditOnParseEvent enum.
  376. WPARAM  wParam;     // First event parameter.
  377. LPARAM  lParam;     // Second event parameter.
  378. };
  379. #endif // !defined(__XTPSYNTAXEDITSTRUCT_H__)