CScrollBar::GetScrollBarInfo
От: r_stout  
Дата: 25.08.08 15:53
Оценка:
Собственно в чем проблема.
При вызове функции GetScrollBarInfo, которая в качестве аргумента принимает указатель на стр-ру SCROLLBARINFO, получаем возврат 0, хотя по МСДН-у, кроме поля cbSize больше ничего не нужно заполнять...
GetLastError() возвращает 0 также, что, насколько понимаю означает отсутствие ошибок.
вот кусок кода:

void CScrollBarDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
PSCROLLBARINFO SBInfo = new SCROLLBARINFO;
SBInfo->cbSize = sizeof(SCROLLBARINFO);
CRect MVERect;
MVEdit.GetWindowRect (&MVERect);
ScreenToClient (&MVERect);

if (pScrollBar->GetScrollBarInfo (SBInfo))
{
MVERect.right = SBInfo->xyThumbBottom;
MVEdit.MoveWindow (&MVERect);
}
else
int result = GetLastError();

CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

cscrollbar::getscrollbarinfo scrollbarinfo
Re: CScrollBar::GetScrollBarInfo
От: Pavel Dvorkin Россия  
Дата: 26.08.08 03:59
Оценка:
Здравствуйте, r_stout, Вы писали:

_>Собственно в чем проблема.

_>При вызове функции GetScrollBarInfo, которая в качестве аргумента принимает указатель на стр-ру SCROLLBARINFO, получаем возврат 0, хотя по МСДН-у, кроме поля cbSize больше ничего не нужно заполнять...
_>GetLastError() возвращает 0 также, что, насколько понимаю означает отсутствие ошибок.

Я ее никогда не вызывал, но ИМХО ты не то делаешь

CScrollBar::GetScrollBarInfo

AFX_INLINE BOOL CScrollBar::GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, SBM_GETSCROLLBARINFO, NULL, (LPARAM)pScrollInfo); }


при чем тут твой диалог ? Это только для контрола-скроллбара годится.
With best regards
Pavel Dvorkin
Re[2]: CScrollBar::GetScrollBarInfo
От: r_stout  
Дата: 27.08.08 12:59
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Я ее никогда не вызывал, но ИМХО ты не то делаешь


PD>CScrollBar::GetScrollBarInfo


PD>AFX_INLINE BOOL CScrollBar::GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const

PD> { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, SBM_GETSCROLLBARINFO, NULL, (LPARAM)pScrollInfo); }


PD>при чем тут твой диалог ? Это только для контрола-скроллбара годится.


Тот кусок кода, который я указал, есть функция-обработчик события для контрола-скроллбара. Т.к. сообщение приходит от скролла на диалог, то и вызывается она из-под обьекта окна.
Re[3]: CScrollBar::GetScrollBarInfo
От: Pavel Dvorkin Россия  
Дата: 28.08.08 04:52
Оценка:
Здравствуйте, r_stout, Вы писали:

_>Тот кусок кода, который я указал, есть функция-обработчик события для контрола-скроллбара. Т.к. сообщение приходит от скролла на диалог, то и вызывается она из-под обьекта окна.


Виноват, не посмотрел как следует

Похоже, здесь какая-то ошибка у MS

http://www.eggheadcafe.com/software/aspnet/31943672/how-to-get-getscrollbarin.aspx
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.