⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6. 键盘.txt

📁 本书介绍了在Microsoft Windows 98、Microsoft Windows NT 4.0和Windows NT 5.0下程序写作的方法
💻 TXT
📖 第 1 页 / 共 5 页
字号:
        
    case   WM_CREATE:
        
            hdc = GetDC (hwnd) ;
        
        
        
            GetTextMetrics (hdc, &tm) ;
        
            cxChar= tm.tmAveCharWidth ;
        
            cxCaps= (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;
        
            cyChar= tm.tmHeight + tm.tmExternalLeading ;
        

            ReleaseDC (hwnd, hdc) ;
        

                   // Save the width of the three columns
        
        
        
            iMaxWidth = 40 * cxChar + 22 * cxCaps ;
        
            return 0 ;
        
        
        
    case   WM_SIZE:
        
            cxClient              = LOWORD (lParam) ;
        
            cyClient              = HIWORD (lParam) ;
        

                   // Set vertical scroll bar range and page size
        

            si.cbSize     = sizeof (si) ;
        
            si.fMask      = SIF_RANGE | SIF_PAGE ;
        
            si.nMin       = 0 ;
        
            si.nMax       = NUMLINES - 1 ;
        
            si.nPage      = cyClient / cyChar ;
        
            SetScrollInfo (hwnd, SB_VERT, &si, TRUE) ;
        

                           // Set horizontal scroll bar range and page size
        

            si.cbSize     = sizeof (si) ;
        
            si.fMask      = SIF_RANGE | SIF_PAGE ;
        
            si.nMin       = 0 ;
        
            si.nMax       = 2 + iMaxWidth / cxChar ;
        
            si.nPage      = cxClient / cxChar ;
        
            SetScrollInfo (hwnd, SB_HORZ, &si, TRUE) ;
        
            return 0 ;
        
        
        
    case WM_VSCROLL:
        
                           // Get all the vertical scroll bar information
        
            si.cbSize     = sizeof (si) ;
        
            si.fMask      = SIF_ALL ;
        
            GetScrollInfo (hwnd, SB_VERT, &si) ;
        

                           // Save the position for comparison later on
        

                   iVertPos = si.nPos ;
        

                   switch (LOWORD (wParam))
        
            {
        
    case SB_TOP:
        
            si.nPos = si.nMin ;
        
            break ;
        
             
        
    case SB_BOTTOM:
        
            si.nPos = si.nMax ;
        
            break ;
        
             
        
    case SB_LINEUP:
        
            si.nPos -= 1 ;
        
            break ;
        
            
        
    case SB_LINEDOWN:
        
            si.nPos += 1 ;
        
            break ;
        
             
        
    case SB_PAGEUP:
        
            si.nPos -= si.nPage ;
        
            break ;
        
             
        
    case SB_PAGEDOWN:
        
            si.nPos += si.nPage ;
        
            break ;
        
             
        
    case SB_THUMBTRACK:
        
            si.nPos = si.nTrackPos ;
        
            break ;
        
             
        
            default:
        
            break ;       
        
            }
        
                   // Set the position and then retrieve it.  Due to adjustments
        
                   //   by Windows it might not be the same as the value set.
        

            si.fMask = SIF_POS ;
        
            SetScrollInfo (hwnd, SB_VERT, &si, TRUE) ;
        
            GetScrollInfo (hwnd, SB_VERT, &si) ;
        

                   // If the position has changed, scroll the window and update it
        

            if (si.nPos != iVertPos)
        
            {                  
        
                   ScrollWindow (hwnd, 0, cyChar * (iVertPos - si.nPos),
        
                                                                                 NULL, NULL) ;
        
                   UpdateWindow (hwnd) ;
        
            }
        
            return 0 ;
        
        
        
    case WM_HSCROLL:
        
                           // Get all the vertical scroll bar information
        
            si.cbSize             = sizeof (si) ;
        
            si.fMask              = SIF_ALL ;
        

                           // Save the position for comparison later on
        

                   GetScrollInfo (hwnd, SB_HORZ, &si) ;
        
                   iHorzPos      = si.nPos ;
        

            switch (LOWORD (wParam))
        
            {
        
    case SB_LINELEFT:
        
            si.nPos -= 1 ;
        
            break ;
        
             
        
    case SB_LINERIGHT:
        
            si.nPos += 1 ;
        
            break ;
        
             
        
    case SB_PAGELEFT:
        
            si.nPos -= si.nPage ;
        
            break ;
        
             
        
    case SB_PAGERIGHT:
        
            si.nPos += si.nPage ;
        
            break ;
        
             
        
    case SB_THUMBPOSITION:
        
            si.nPos = si.nTrackPos ;
        
            break ;
        
             
        
            default:
        
            break ;
        
            }
        
                           // Set the position and then retrieve it.  Due to adjustments
        
                           //   by Windows it might not be the same as the value set.
        

            si.fMask = SIF_POS ;
        
            SetScrollInfo (hwnd, SB_HORZ, &si, TRUE) ;
        
            GetScrollInfo (hwnd, SB_HORZ, &si) ;
        
        
        
                           // If the position has changed, scroll the window
        

            if (si.nPos != iHorzPos)
        
            {
        
                   ScrollWindow (hwnd, cxChar * (iHorzPos - si.nPos), 0,
        
                   NULL, NULL) ;
        
            }
        
            return 0 ;
        

    case WM_KEYDOWN:
        
            switch (wParam)
        
    {
        
    case VK_HOME:
        
            SendMessage (hwnd, WM_VSCROLL, SB_TOP, 0) ;
        
            break ;
        
             
        
    case VK_END:
        
            SendMessage (hwnd, WM_VSCROLL, SB_BOTTOM, 0) ;
        
            break ;
        
             
        
    case VK_PRIOR:
        
            SendMessage (hwnd, WM_VSCROLL, SB_PAGEUP, 0) ;
        
            break ;
        
             
        
    case VK_NEXT:
        
            SendMessage (hwnd, WM_VSCROLL, SB_PAGEDOWN, 0) ;
        
            break ;
        
             
        
    case VK_UP:
        
            SendMessage (hwnd, WM_VSCROLL, SB_LINEUP, 0) ;
        
            break ;
        

    case VK_DOWN:
        
            SendMessage (hwnd, WM_VSCROLL, SB_LINEDOWN, 0) ;
        
            break ;
        
             
        
    case VK_LEFT:
        
            SendMessage (hwnd, WM_HSCROLL, SB_PAGEUP, 0) ;
        
            break ;
        
             
        
    case VK_RIGHT:
        
            SendMessage (hwnd, WM_HSCROLL, SB_PAGEDOWN, 0) ;
        
            break ;
        
            }
        
            return 0 ;
        
    case WM_PAINT:
        
            hdc = BeginPaint (hwnd, &ps) ;
        
                           // Get vertical scroll bar position
        
            si.cbSize             = sizeof (si) ;
        
            si.fMask              = SIF_POS ;
        
            GetScrollInfo (hwnd, SB_VERT, &si) ;
        
            iVertPos              = si.nPos ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -