coolsb_mfctestView.cpp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. // coolsb_mfctestView.cpp : implementation of the CCoolsb_mfctestView class
  2. //
  3. #include "stdafx.h"
  4. #include "coolsb_mfctest.h"
  5. #include "coolsb_mfctestDoc.h"
  6. #include "coolsb_mfctestView.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // Cool Scroll support
  14. #include "..\coolsb\coolscroll.h"
  15. //#pragma comment(linker, "/NODEFAULTLIB:LIBCD")
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CCoolsb_mfctestView
  18. IMPLEMENT_DYNCREATE(CCoolsb_mfctestView, CView)
  19. BEGIN_MESSAGE_MAP(CCoolsb_mfctestView, CView)
  20. //{{AFX_MSG_MAP(CCoolsb_mfctestView)
  21. ON_WM_VSCROLL()
  22. ON_WM_HSCROLL()
  23. ON_WM_CREATE()
  24. ON_WM_SIZE()
  25. ON_WM_PAINT()
  26. //}}AFX_MSG_MAP
  27. END_MESSAGE_MAP()
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CCoolsb_mfctestView construction/destruction
  30. CCoolsb_mfctestView::CCoolsb_mfctestView()
  31. {
  32. // TODO: add construction code here
  33. xChar = 10;
  34. yChar = 10;
  35. nVNumLines = 50;
  36. nHNumLines = 50;
  37. nVScrollPos = 0;
  38. nHScrollPos = 0;
  39. }
  40. CCoolsb_mfctestView::~CCoolsb_mfctestView()
  41. {
  42. }
  43. BOOL CCoolsb_mfctestView::PreCreateWindow(CREATESTRUCT& cs)
  44. {
  45. // TODO: Modify the Window class or styles here by modifying
  46. // the CREATESTRUCT cs
  47. return CView::PreCreateWindow(cs);
  48. }
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CCoolsb_mfctestView drawing
  51. int p_x = 100;
  52. int p_y = 100;
  53. void CCoolsb_mfctestView::OnDraw(CDC* pDC)
  54. {
  55. CCoolsb_mfctestDoc* pDoc = GetDocument();
  56. ASSERT_VALID(pDoc);
  57. // TODO: add draw code for native data here
  58. }
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CCoolsb_mfctestView diagnostics
  61. #ifdef _DEBUG
  62. void CCoolsb_mfctestView::AssertValid() const
  63. {
  64. CView::AssertValid();
  65. }
  66. void CCoolsb_mfctestView::Dump(CDumpContext& dc) const
  67. {
  68. CView::Dump(dc);
  69. }
  70. CCoolsb_mfctestDoc* CCoolsb_mfctestView::GetDocument() // non-debug version is inline
  71. {
  72. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCoolsb_mfctestDoc)));
  73. return (CCoolsb_mfctestDoc*)m_pDocument;
  74. }
  75. #endif //_DEBUG
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CCoolsb_mfctestView message handlers
  78. void CCoolsb_mfctestView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  79. {
  80. // TODO: Add your message handler code here and/or call default
  81. switch(nSBCode)
  82. {
  83. case SB_LINEUP: nVScrollPos --; break;
  84. case SB_LINEDOWN: nVScrollPos ++; break;
  85. case SB_PAGEUP: nVScrollPos -= nVScrollPage; break;
  86. case SB_PAGEDOWN: nVScrollPos += nVScrollPage; break;
  87. case SB_TOP: nVScrollPos = 0; break;
  88. case SB_BOTTOM: nVScrollPos = nVScrollMax -1; break;
  89. case SB_THUMBTRACK: nVScrollPos = nPos; break;
  90. }
  91. if(nVScrollPos < 0)
  92. nVScrollPos = 0;
  93. if(nVScrollPos > nVScrollMax - nVScrollPage + 1)
  94. nVScrollPos = nVScrollMax - nVScrollPage + 1;
  95. p_y++;
  96. CoolSB_SetScrollPos(m_hWnd, SB_VERT, nVScrollPos, TRUE);
  97. //CView::OnVScroll(nSBCode, nPos, pScrollBar);
  98. }
  99. void CCoolsb_mfctestView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  100. {
  101. // TODO: Add your message handler code here and/or call default
  102. switch(nSBCode)
  103. {
  104. case SB_LINEUP: nHScrollPos --; break;
  105. case SB_LINEDOWN: nHScrollPos ++; break;
  106. case SB_PAGEUP: nHScrollPos -= nHScrollPage; break;
  107. case SB_PAGEDOWN: nHScrollPos += nHScrollPage; break;
  108. case SB_TOP: nHScrollPos = 0; break;
  109. case SB_BOTTOM: nHScrollPos = nHScrollMax -1; break;
  110. case SB_THUMBTRACK: nHScrollPos = nPos; break;
  111. }
  112. if(nHScrollPos < 0)
  113. nHScrollPos = 0;
  114. if(nHScrollPos > nHScrollMax - nHScrollPage + 1)
  115. nHScrollPos = nHScrollMax - nHScrollPage + 1;
  116. p_x++;
  117. CoolSB_SetScrollPos(m_hWnd, SB_HORZ, nHScrollPos, TRUE);
  118. // CView::OnHScroll(nSBCode, nPos, pScrollBar);
  119. }
  120. void CCoolsb_mfctestView::SetupScrollbars()
  121. {
  122. SCROLLINFO si;
  123. RECT rect;
  124. GetClientRect(&rect);
  125. // VERT
  126. nVScrollPage = min(nVNumLines + 1, (rect.bottom - rect.top) / yChar);
  127. nVScrollMax = max(0, nVNumLines );
  128. nVScrollPos = min(nVScrollPos, nVScrollMax - nVScrollPage + 1);
  129. si.cbSize = sizeof(si);
  130. si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE | SIF_DISABLENOSCROLL;
  131. si.nMin = 0;
  132. si.nMax = nVScrollMax;
  133. si.nPos = nVScrollPos;
  134. si.nPage = min(nVScrollPage, nVScrollMax + 1);
  135. CoolSB_SetScrollInfo (m_hWnd, SB_VERT, &si, TRUE);
  136. // HORZ
  137. nHScrollPage = min(nHNumLines + 1, (rect.right - rect.left) / xChar);
  138. nHScrollMax = max(0, nHNumLines);
  139. nHScrollPos = min(nHScrollPos, nHScrollMax - nHScrollPage + 1);
  140. si.cbSize = sizeof(si);
  141. si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE | SIF_DISABLENOSCROLL;
  142. si.nMin = 0;
  143. si.nMax = nHScrollMax;
  144. si.nPos = nHScrollPos;
  145. si.nPage = min(nHScrollPage, nHScrollMax + 1);
  146. CoolSB_SetScrollInfo (m_hWnd, SB_HORZ, &si, TRUE);
  147. }
  148. int CCoolsb_mfctestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  149. {
  150. if (CView::OnCreate(lpCreateStruct) == -1)
  151. return -1;
  152. // TODO: Add your specialized creation code here
  153. InitializeCoolSB(m_hWnd);
  154. SCROLLINFO si;
  155. si.cbSize = sizeof(si);
  156. si.fMask = SIF_ALL;
  157. si.nMin = 0;
  158. si.nMax = 100;
  159. si.nPage = 10;
  160. si.nPos = 0;
  161. CoolSB_SetScrollInfo(m_hWnd, SB_HORZ, &si, TRUE);
  162. CoolSB_SetScrollInfo(m_hWnd, SB_VERT, &si, TRUE);
  163. CoolSB_SetStyle(m_hWnd, SB_BOTH, CSBS_FLAT);
  164. return 0;
  165. }
  166. void CCoolsb_mfctestView::OnSize(UINT nType, int cx, int cy)
  167. {
  168. CView::OnSize(nType, cx, cy);
  169. // TODO: Add your message handler code here
  170. SetupScrollbars();
  171. }
  172. void CCoolsb_mfctestView::OnPaint()
  173. {
  174. CPaintDC dc(this); // device context for painting
  175. // TODO: Add your message handler code here
  176. // dc->TextOut( p_x, p_y , "test ok!!!" );
  177. // Do not call CView::OnPaint() for painting messages
  178. }