Показать сообщение отдельно

  #1693  
Старый 26.06.2017, 13:04
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

Цитата:
Сообщение от SR_team  

Много вас таких, не способных сделать ползунок.

C++:





Код:
void
CNode
::
DrawScrollBarVertical
(
int
so_V
,
int
so_H
)
{
int
fullScroll
=
_size
.
y
-
4
;
float
rollerSize
=
(
float
)
_size
.
y
/
(
(
float
)
_scrollSizeVertical
)
*
(
float
)
fullScroll
;
float
rollerOffset
=
(
float
)
_size
.
y
/
(
(
float
)
_scrollSizeVertical
)
*
(
float
)
_scrollOffsetVertical
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
-
so_H
,
_pos
.
y
-
so_V
,
6
,
_size
.
y
,
_scrollFrame
)
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
+
2
-
so_H
,
(
_pos
.
y
+
2
)
-
so_V
,
2
,
fullScroll
,
_scrollMat
)
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
+
2
-
so_H
,
(
_pos
.
y
+
2
+
rollerOffset
)
-
so_V
,
2
,
rollerSize
,
_scrollRoller
)
;
}
void
CNode
::
DrawScrollBarHorizontal
(
int
so_V
,
int
so_H
)
{
float
rollerSize
=
(
float
)
_size
.
x
/
(
(
float
)
_scrollSizeHorizontal
)
*
(
float
)
_size
.
x
;
float
rollerOffset
=
(
float
)
_size
.
x
/
(
(
float
)
_scrollSizeHorizontal
)
*
(
float
)
_scrollOffsetHorizontal
;
_draw
->
D3DBox
(
_pos
.
x
-
so_H
,
(
_pos
.
y
+
_size
.
y
)
-
so_V
,
_size
.
x
+
6
,
6
,
_scrollFrame
)
;
_draw
->
D3DBox
(
_pos
.
x
+
3
-
so_H
,
(
_pos
.
y
+
_size
.
y
+
2
)
-
so_V
,
_size
.
x
,
2
,
_scrollMat
)
;
_draw
->
D3DBox
(
_pos
.
x
+
3
+
rollerOffset
-
so_H
,
(
_pos
.
y
+
_size
.
y
+
2
)
-
so_V
,
rollerSize
,
2
,
_scrollRoller
)
;
}


so_V и so_H тебе не нужны скорее всего - можешь их просто удалить или передавать нули.

Прокрутка:

C++:





Код:
switch
(
uMsg
)
{
case
WM_MOUSEWHEEL
:
if
(
GET_WHEEL_DELTA_WPARAM
(
wParam
)

_scrollSizeVertical
)
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
}
else
{
_scrollOffsetVertical
-=
_scrollStep
;
if
(
_scrollOffsetVertical

_scrollSizeVertical
)
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
return
false
;
case
VK_LEFT
:
_scrollOffsetHorizontal
-=
_scrollStep
;
if
(
_scrollOffsetHorizontal

_scrollSizeHorizontal
)
_scrollOffsetHorizontal
=
_scrollSizeHorizontal
-
_size
.
x
;
return
false
;
case
VK_PRIOR
:
_scrollOffsetVertical
=
0
;
return
false
;
case
VK_NEXT
:
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
return
false
;
case
VK_HOME
:
_scrollOffsetHorizontal
=
0
;
return
false
;
case
VK_END
:
_scrollOffsetHorizontal
=
_scrollSizeHorizontal
-
_size
.
x
;
return
false
;
default
:
break
;
}
break
;
default
:
break
;
}


Размер скролла у меня указывается в пикселях, но можно притянуть и строки.
Благодарю , но оказывается , было вроде как все правильно , просто ползнунок оставался на том же месте , пока до него не дотронешься...
 
Ответить с цитированием