SCROLLBAR.max > 65536

Раздел посвящен программированию с использованием Power Basic.
Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

SCROLLBAR.max > 65536

Сообщение Димитрий » 27.04.2012 (Пт) 10:50

Прошу совета, как обойти ограничение?
Код: Выделить всё
CASE %WM_HSCROLL
            SELECT CASE LO(WORD, CB.WPARAM)
               CASE %SB_THUMBPOSITION, %SB_THUMBTRACK
' This code allows for tracking above the 16-bit limit (65536) of HIWRD
' Proposed by Borje Hagsten
                   SCROLLBAR SET POS hEdit, %ID_SCRBAR, HI(WORD, CB.WPARAM)
            END SELECT

DarkMachine
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 51
Зарегистрирован: 24.02.2012 (Пт) 15:58

Re: SCROLLBAR.max > 65536

Сообщение DarkMachine » 30.04.2012 (Пн) 8:59


Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Re: SCROLLBAR.max > 65536

Сообщение Димитрий » 02.05.2012 (Ср) 9:57

Спасибо DarkMachine.
В итоге код:
Код: Выделить всё
CALLBACK FUNCTION DialogProcEDIT
  STATIC si AS SCROLLINFO

    SELECT CASE CB.MSG
        CASE %WM_INITDIALOG
            si.cbSize = SIZEOF(si)
            si.fMask  = %SIF_ALL
            si.nMin   = 1
            si.nMax   = 100000
            si.nPage  = 1000
            SI.nPos   = 1
            CONTROL SEND hEdit, %ID_SCRBAR, %SBM_SETSCROLLINFO, %FALSE, VARPTR(si)
       CASE %WM_HSCROLL
          SELECT CASE LOWRD(CBWPARAM)
          si.cbSize = SIZEOF(si)
          si.fMask = %SIF_TRACKPOS
          CONTROL SEND hEdit, %ID_SCRBAR, %SBM_GETSCROLLINFO, 0, VARPTR(si)
              CASE %SB_THUMBPOSITION, %SB_THUMBTRACK
                   si.nPos = si.nTrackPos
              CASE %SB_LINERIGHT
                   si.nPos = si.nPos + 1
              CASE %SB_LINELEFT
                   si.nPos= si.nPos - 1
              CASE %SB_PAGERIGHT
                   si.nPos=si.nPos + si.nPage
              CASE %SB_PAGELEFT
                   si.nPos=si.nPos - si.nPage
              CASE %SB_LEFT
                   si.nPos = si.nMin
              CASE %SB_RIGHT
                   si.nPos = si.nMax
          END SELECT
          si.nPos = MAX&(si.nMin, MIN&(si.nPos, si.nMax - si.nPage + 1))
          si.fMask = %SIF_POS
          CONTROL SEND hEdit, %ID_SCRBAR, %SBM_SETSCROLLINFO, %TRUE, VARPTR(Si)
          CONTROL SET TEXT hEdit, %ID_NLAB, STR$(si.nPos)
    END SELECT   


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

    TopList