home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / m / m003_1 / sb_bc.ddi / BC / CH5 / WINAPP-4.DSK (.txt) < prev    next >
Encoding:
Turbo C Context File  |  1991-12-10  |  10.9 KB  |  329 lines

  1. Turbo C Context File 
  2. WINAPP-4.DEF
  3. WINAPP-4.CPP
  4. PROG4-6.CPP
  5. PROG4-7.CPP
  6. *.CPP
  7. D:\WINAPP\*.DEF
  8. D:\WINAPP\*.C
  9. D:\WINAPP\*.H
  10. D:\WINAPP\*.CPP
  11.  void *.c 
  12. CarLover
  13. Cadillac
  14. SB_VERT
  15. pragma
  16. cplusplus
  17. NOMINMAX
  18. cxChar
  19. cyChar
  20. cxCaps
  21. nMaxX
  22. Buick
  23. FontSize.cxChar
  24. FontSize.cyChar
  25. FontSize.cxCaps
  26. FontSize.nMaxX
  27. *.CPP
  28. *.DEF
  29. chdemo
  30. chself
  31. lndemo
  32. lnself
  33. D:\BORLANDC\INCLUDE\WINDOWS.H
  34. D:\WINAPP\WINAPP-2.C
  35. D:\WINAPP\WINAPP-2.C
  36. D:\BORLANDC\INCLUDE\WINDOWS.H
  37. D:\WINAPP\WINAPP-3.DEF
  38. D:\WINAPP\WINAPP-4.DEF
  39. D:\WINAPP\WINAPP-4.CPP
  40. D:\WINAPP\WINAPP-2.C
  41. D:\WINAPP\NONAME01.CPP
  42. P\WINAPP-4.CPP
  43. D:\BORLANDC\INCLUDE\WINDOWS.H
  44. D:\WINAPP\WHELLO.CPP
  45. D:\WINAPP\WINAPP-3.CPP
  46. D:\WINAPP\WINAPP-4.DEF
  47. D:\WINAPP\WINAPP-4.DEF
  48. D:\WINAPP\WINAPP-4.CPP
  49. long FAR PASCAL AppWndProc (HWND hwnd,
  50.                 WORD message,
  51.                 WORD wParam,
  52.                 LONG lParam)
  53. { HDC hdc ;
  54.   TEXTMETRIC tm ;
  55.   PAINTSTRUCT ps ;
  56.   static short int cxChar, cyChar, cxCaps, nMaxX ;
  57.   static short int cxClient, cyClient ;
  58.   static short int nVScrollMax, nVScrollPos ;
  59.   static short int nHScrollMax, nHScrollPos ;
  60.   short int nVScrollInc, nHScrollInc ;
  61.   short int nBeginLine, nEndLine ;
  62.   short int i,x,y ;
  63.   switch (message)
  64.     { case WM_CREATE :
  65.        hdc = GetDC(hwnd) ;
  66.        GetTextMetrics(hdc,&tm) ;
  67.        cxChar = tm.tmAveCharWidth ;
  68.        cyChar = tm.tmHeight + tm.tmExternalLeading ;
  69.        cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) *cxChar / 2 ;
  70.        ReleaseDC(hwnd,hdc) ;
  71.        nMaxX = 20 * cxCaps + 45 * cxChar ;
  72.        break ;
  73.       case WM_SIZE :
  74.        cxClient = LOWORD(lParam) ;
  75.        cyClient = HIWORD(lParam) ;
  76.        nVScrollMax = max(0, NUMLINE+2-cyClient/cyChar) ;
  77.        nVScrollPos = min(nVScrollMax,nVScrollPos) ;
  78.        SetScrollRange(hwnd, SB_VERT, 0, nVScrollMax, FALSE) ;
  79.        SetScrollPos(hwnd, SB_VERT, nVScrollPos, TRUE) ;
  80.        nHScrollMax = max(0, (nMaxX-cxClient)/cxChar+2) ;
  81.        nHScrollPos = min(nHScrollMax,nHScrollPos) ;
  82.        SetScrollRange(hwnd, SB_HORZ, 0, nHScrollMax, FALSE) ;
  83.        SetScrollPos(hwnd, SB_HORZ, nHScrollPos, TRUE) ;
  84.        break ;
  85.       case WM_VSCROLL :
  86.        switch (wParam)
  87.          { case SB_TOP :
  88.             nVScrollInc = -nVScrollPos ;
  89.             break ;
  90.            case SB_BOTTOM :
  91.             nVScrollInc = nVScrollMax-nVScrollPos ;
  92.             break ;
  93.            case SB_LINEUP :
  94.             nVScrollInc = -1 ;
  95.             break ;
  96.            case SB_LINEDOWN :
  97.             nVScrollInc = 1 ;
  98.             break ;
  99.            case SB_PAGEUP :
  100.             nVScrollInc = min(-1,-cyClient/cyChar) ;
  101.             break ;
  102.            case SB_PAGEDOWN :
  103.             nVScrollInc = max(1,cyClient/cyChar) ;
  104.             break ;
  105.            case SB_THUMBTRACK :
  106.             nVScrollInc = LOWORD(lParam)-nVScrollPos ;
  107.             break ;
  108.            default :
  109.             nVScrollInc = 0 ;
  110.             break ;
  111.          }
  112.        nVScrollInc =  min(nVScrollInc , nVScrollMax-nVScrollPos) ;
  113.        nVScrollInc =  max(nVScrollInc , -nVScrollPos) ;
  114.        if (nVScrollInc)
  115.           { nVScrollPos += nVScrollInc ;
  116.         ScrollWindow(hwnd, 0, -cyChar*nVScrollInc, NULL, NULL) ;
  117.         SetScrollPos(hwnd, SB_VERT, nVScrollPos, TRUE) ;
  118.         UpdateWindow(hwnd) ;
  119.           }
  120.        break ;
  121.       case WM_HSCROLL :
  122.        switch (wParam)
  123.          { case SB_TOP :
  124.             nHScrollInc = -nHScrollPos ;
  125.             break ;
  126.            case SB_BOTTOM :
  127.             nHScrollInc = nHScrollMax-nHScrollPos ;
  128.             break ;
  129.            case SB_LINEUP :
  130.             nHScrollInc = -1 ;
  131.             break ;
  132.            case SB_LINEDOWN :
  133.             nHScrollInc = 1 ;
  134.             break ;
  135.            case SB_PAGEUP :
  136.             nHScrollInc = min(-1,-cxClient/cxChar) ;
  137.             break ;
  138.            case SB_PAGEDOWN :
  139.             nHScrollInc = max(1,cxClient/cxChar) ;
  140.             break ;
  141.            case SB_THUMBTRACK :
  142.             nHScrollInc = LOWORD(lParam)-nHScrollPos ;
  143.             break ;
  144.            default :
  145.             nHScrollInc = 0 ;
  146.             break ;
  147.          }
  148.        nHScrollInc =  min(nHScrollInc , nHScrollMax-nHScrollPos) ;
  149.        nHScrollInc =  max(nHScrollInc , -nHScrollPos) ;
  150.        if (nHScrollInc)
  151.           { nHScrollPos += nHScrollInc ;
  152.         ScrollWindow(hwnd, -cxChar*nHScrollInc, 0, NULL, NULL) ;
  153.         SetScrollPos(hwnd, SB_HORZ, nHScrollPos, TRUE) ;
  154.         UpdateWindow(hwnd) ;
  155.           }
  156.        break ;
  157.       case WM_PAINT :
  158.        hdc = BeginPaint(hwnd, &ps) ;
  159.        nBeginLine = max(0,nVScrollPos + ps.rcPaint.top/cyChar - 1) ;
  160.        nEndLine = min(NUMLINE,nVScrollPos + ps.rcPaint.bottom/cyChar) ;
  161.        for (i=nBeginLine ; i<nEndLine ; i++)
  162.          { x = cxChar * (1-nHScrollPos) ;
  163.            y = cyChar * (1-nVScrollPos+i) ;
  164.            TextOut(hdc, x, y,
  165.                WinStruct[i].szStruct,
  166.                lstrlen(WinStruct[i].szStruct)) ;
  167.            TextOut(hdc, x+20*cxCaps, y,
  168.                WinStruct[i].szDescriptor,
  169.                lstrlen(WinStruct[i].szDescriptor)) ;
  170.          }
  171.        EndPaint(hwnd, &ps) ;
  172.        break ;
  173.       case WM_DESTROY :
  174.        PostQuitMessage(0) ;
  175.        break ;
  176.       default :
  177.        return DefWindowProc(hwnd, message, wParam, lParam) ;
  178.     }
  179.   return 0 ;
  180. long MainWindow::AppWndProc(WORD message, WORD wParam, LONG lParam)
  181. SetScrollPos(hwnd, SB_VERT, nVScrollPos, TRUE) ;
  182. #pragma hdrfile "windows.sym"
  183. #include <windows.h>
  184. #pragma hdrstop
  185. #include"winapp-2.h"
  186. VScroll.Set(SB_VERT) ;
  187.   HScroll.Set(SB_HORZ) ;
  188. #pragma hdrfile "windows.sym"
  189. #include <windows.h>
  190. #pragma hdrstop
  191. long FAR PASCAL AppWndProc (HWND hwnd,
  192.                 WORD message,
  193.                 WORD wParam,
  194.                 LONG lParam)
  195. { HDC hdc ;
  196.   TEXTMETRIC tm ;
  197.   PAINTSTRUCT ps ;
  198.   static short int cxChar, cyChar, cxCaps, nMaxX ;
  199.   static short int cxClient, cyClient ;
  200.   static short int nVScrollMax, nVScrollPos ;
  201.   static short int nHScrollMax, nHScrollPos ;
  202.   short int nVScrollInc, nHScrollInc ;
  203.   short int nBeginLine, nEndLine ;
  204.   short int i,x,y ;
  205.   switch (message)
  206.     { case WM_CREATE :
  207.        hdc = GetDC(hwnd) ;
  208.        GetTextMetrics(hdc,&tm) ;
  209.        cxChar = tm.tmAveCharWidth ;
  210.        cyChar = tm.tmHeight + tm.tmExternalLeading ;
  211.        cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) *cxChar / 2 ;
  212.        ReleaseDC(hwnd,hdc) ;
  213.        nMaxX = 20 * cxCaps + 45 * cxChar ;
  214.        break ;
  215.       case WM_SIZE :
  216.        cxClient = LOWORD(lParam) ;
  217.        cyClient = HIWORD(lParam) ;
  218.        nVScrollMax = max(0, NUMLINE+2-cyClient/cyChar) ;
  219.        nVScrollPos = min(nVScrollMax,nVScrollPos) ;
  220.        SetScrollRange(hwnd, SB_VERT, 0, nVScrollMax, FALSE) ;
  221.        SetScrollPos(hwnd, SB_VERT, nVScrollPos, TRUE) ;
  222.        nHScrollMax = max(0, (nMaxX-cxClient)/cxChar+2) ;
  223.        nHScrollPos = min(nHScrollMax,nHScrollPos) ;
  224.        SetScrollRange(hwnd, SB_HORZ, 0, nHScrollMax, FALSE) ;
  225.        SetScrollPos(hwnd, SB_HORZ, nHScrollPos, TRUE) ;
  226.        break ;
  227.       case WM_VSCROLL :
  228.        switch (wParam)
  229.          { case SB_TOP :
  230.             nVScrollInc = -nVScrollPos ;
  231.             break ;
  232.            case SB_BOTTOM :
  233.             nVScrollInc = nVScrollMax-nVScrollPos ;
  234.             break ;
  235.            case SB_LINEUP :
  236.             nVScrollInc = -1 ;
  237.             break ;
  238.            case SB_LINEDOWN :
  239.             nVScrollInc = 1 ;
  240.             break ;
  241.            case SB_PAGEUP :
  242.             nVScrollInc = min(-1,-cyClient/cyChar) ;
  243.             break ;
  244.            case SB_PAGEDOWN :
  245.             nVScrollInc = max(1,cyClient/cyChar) ;
  246.             break ;
  247.            case SB_THUMBTRACK :
  248.             nVScrollInc = LOWORD(lParam)-nVScrollPos ;
  249.             break ;
  250.            default :
  251.             nVScrollInc = 0 ;
  252.             break ;
  253.          }
  254.        nVScrollInc =  min(nVScrollInc , nVScrollMax-nVScrollPos) ;
  255.        nVScrollInc =  max(nVScrollInc , -nVScrollPos) ;
  256.        if (nVScrollInc)
  257.           { nVScrollPos += nVScrollInc ;
  258.         ScrollWindow(hwnd, 0, -cyChar*nVScrollInc, NULL, NULL) ;
  259.         SetScrollPos(hwnd, SB_VERT, nVScrollPos, TRUE) ;
  260.         UpdateWindow(hwnd) ;
  261.           }
  262.        break ;
  263.       case WM_HSCROLL :
  264.        switch (wParam)
  265.          { case SB_TOP :
  266.             nHScrollInc = -nHScrollPos ;
  267.             break ;
  268.            case SB_BOTTOM :
  269.             nHScrollInc = nHScrollMax-nHScrollPos ;
  270.             break ;
  271.            case SB_LINEUP :
  272.             nHScrollInc = -1 ;
  273.             break ;
  274.            case SB_LINEDOWN :
  275.             nHScrollInc = 1 ;
  276.             break ;
  277.            case SB_PAGEUP :
  278.             nHScrollInc = min(-1,-cxClient/cxChar) ;
  279.             break ;
  280.            case SB_PAGEDOWN :
  281.             nHScrollInc = max(1,cxClient/cxChar) ;
  282.             break ;
  283.            case SB_THUMBTRACK :
  284.             nHScrollInc = LOWORD(lParam)-nHScrollPos ;
  285.             break ;
  286.            default :
  287.             nHScrollInc = 0 ;
  288.             break ;
  289.          }
  290.        nHScrollInc =  min(nHScrollInc , nHScrollMax-nHScrollPos) ;
  291.        nHScrollInc =  max(nHScrollInc , -nHScrollPos) ;
  292.        if (nHScrollInc)
  293.           { nHScrollPos += nHScrollInc ;
  294.         ScrollWindow(hwnd, -cxChar*nHScrollInc, 0, NULL, NULL) ;
  295.         SetScrollPos(hwnd, SB_HORZ, nHScrollPos, TRUE) ;
  296.         UpdateWindow(hwnd) ;
  297.           }
  298.        break ;
  299.       case WM_PAINT :
  300.        hdc = BeginPaint(hwnd, &ps) ;
  301.        nBeginLine = max(0,nVScrollPos + ps.rcPaint.top/cyChar - 1) ;
  302.        nEndLine = min(NUMLINE,nVScrollPos + ps.rcPaint.bottom/cyChar) ;
  303.        for (i=nBeginLine ; i<nEndLine ; i++)
  304.          { x = cxChar * (1-nHScrollPos) ;
  305.            y = cyChar * (1-nVScrollPos+i) ;
  306.            TextOut(hdc, x, y,
  307.                WinStruct[i].szStruct,
  308.                lstrlen(WinStruct[i].szStruct)) ;
  309.            TextOut(hdc, x+20*cxCaps, y,
  310.                WinStruct[i].szDescriptor,
  311.                lstrlen(WinStruct[i].szDescriptor)) ;
  312.          }
  313.        EndPaint(hwnd, &ps) ;
  314.        break ;
  315.       case WM_DESTROY :
  316.        PostQuitMessage(0) ;
  317.        break ;
  318.       default :
  319.        return DefWindowProc(hwnd, message, wParam, lParam) ;
  320.     }
  321.   return 0 ;
  322. long MainWindow::AppWndProc(WORD message, WORD wParam, LONG lParam)
  323. #define min(a,b)            (((a) < (b)) ? (a) : (b))
  324. #define max(a,b)            (((a) > (b)) ? (a) : (b))
  325. // Turn off warning: Parameter 'lpszCmdLine' is never used in function WinMain(unsigned int,unsigned int,char far*,int)
  326. #pragma argsused
  327. // Turn off warning: 'MainWnd' is assigned a value that is never used in function WinMain(unsigned int,unsigned int,char far*,int)
  328. #pragma option -w-aus
  329.