Function.h
上传用户:starrett
上传日期:2020-11-17
资源大小:1474k
文件大小:3k
源码类别:

RichEdit

开发平台:

Visual C++

  1. //#include"stdlib.h"
  2. #define ROWSMAX 100   //行
  3. #define COLSMAX 200   //列
  4. int RowSum;
  5. typedef struct Node
  6. {
  7.     TCHAR date[COLSMAX] ;//每一行的字符
  8. int   width ;//每一行从开始到最后一个字符的宽度
  9. int   number ;//每一行字符个数
  10. }RowNode ;
  11. int InsertRow(RowNode* prow[],int row)
  12. {
  13. int i;
  14. if(row >= RowSum)
  15. {
  16. prow[RowSum] = (RowNode *)malloc (sizeof (RowNode) ) ;
  17. prow[RowSum]->number = 0 ;
  18. prow[RowSum]->width = 0 ;
  19. }
  20. else if(row < RowSum)
  21. {
  22. for(i = RowSum;i > row;i--)
  23. prow[i] = prow[i-1];
  24. prow[row] = (RowNode *)malloc (sizeof (RowNode) ) ;
  25. prow[row]->number = 0;
  26. prow[RowSum]->width = 0 ;
  27. }
  28. if ( prow[RowSum] == NULL )
  29. return -1 ;
  30. return RowSum++;
  31. }
  32. int DeleteRow(RowNode* prow[],int row)
  33. {
  34. int i;
  35. if(row >= RowSum)
  36. free(prow[RowSum]);
  37. else if(row < RowSum)
  38. {
  39. free(prow[row]);
  40. for(i = row ; i < RowSum-1 ; i++)
  41. prow[i] = prow[i+1];
  42. }
  43. return RowSum--;
  44. }
  45. int InputChar(RowNode* prow[],int row,int cols,TCHAR c)
  46. {
  47. int i;
  48. if(row >= RowSum) row = RowSum - 1;
  49. if(cols >= prow[row]->number)                  //在某行的末尾插入字符
  50. prow[row]->date[prow[row]->number] = c;    
  51. else if(cols < prow[row]->number)              
  52. {
  53. for(i=prow[row]->number;i>cols;i--)
  54. prow[row]->date[i] = prow[row]->date[i-1];
  55. prow[row]->date[cols] = c;
  56. }
  57. return prow[row]->number++;
  58. }
  59. int DeleteChar(RowNode* prow[],int row,int cols)
  60. {
  61. int i;
  62. if(prow[row]->number == 0) return 0;
  63. for(i=cols ; i < prow[row]->number-1 ; i++)
  64. prow[row]->date[i] = prow[row]->date[i+1];
  65. return --prow[row]->number;
  66. }
  67. int CopyRow(RowNode* prow[],int row,int cols,int row2,int cols2)
  68. {
  69. int i;
  70. for(i=cols ; i<prow[row]->number ; i++,cols2++)
  71. prow[row2]->date[cols2] = prow[row]->date[i];
  72. prow[row]->number = cols;
  73. prow[row2]->number = cols2;
  74. return 1;
  75. }
  76. void ClsChar(HDC hdc,int xLeft,int yTop,int xRight,int yBottom)
  77. {
  78. SelectObject(hdc,CreatePen(PS_SOLID,1,GetSysColor(COLOR_WINDOW)));
  79. SelectObject(hdc,CreateSolidBrush(GetSysColor(COLOR_WINDOW)));
  80. Rectangle(hdc,xLeft,yTop,xRight,yBottom);
  81. DeleteObject(SelectObject(hdc,GetStockObject(BLACK_PEN)));
  82. DeleteObject(SelectObject(hdc,GetStockObject(WHITE_BRUSH)));
  83. }
  84. void SetFont(HDC hdc, DWORD dwCharSet)
  85. {
  86. SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,dwCharSet, 0, 0, 0, FIXED_PITCH, NULL)) ;
  87. SetBkColor(hdc,GetSysColor(COLOR_WINDOW));
  88. SetTextColor(hdc,GetSysColor(COLOR_WINDOWTEXT));
  89. }
  90. void SetScroll(HWND hwnd, int cyBuffer, int Scroll)
  91. {
  92. SCROLLINFO  si ;
  93. si.cbSize = sizeof (si) ;
  94. si.fMask  = SIF_RANGE | SIF_PAGE ;
  95. si.nMin   = 0 ;
  96. si.nMax   = RowSum-1 ;
  97. si.nPage  = cyBuffer ;
  98. SetScrollInfo (hwnd, Scroll, &si, TRUE) ;
  99. }
  100. int CharWidth(TCHAR c)
  101. {
  102. if((c >> 8)>0)
  103. return 2 ;
  104. return 1 ;
  105. }