スクロールバーコントロールについて質問があります
作成手順
1) IDC_SCROLLBAR1として、リソースエディタで適当な位置に配置
2) 右クリック 「変数の追加」で、コントロール変数の追加
CForm1View に、 CScrollBar m_sbHorz; として、追加される
3) CForm1View::InitialUpdate() で、
// スクロールバーの設定
this->m_sbHorz.SetParent(this);
HWND hWndSb;
GetDlgItem(IDC_SCROLLBAR1, &hWndSb);
::ShowWindow( hWndSb, SW_SHOW );
CRect rectSb;
::GetClientRect( hWndSb, &rectSb );
4) CForm1View::OnDraw() で、
HWND hWndSb;
GetDlgItem(IDC_SCROLLBAR1, &hWndSb);
::SetScrollRange( hWndSb, SB_CTL, this->m_ScMinVal, this->m_ScMaxVal, FALSE );
::SetScrollPos( hWndSb, SB_CTL, this->m_ScPos, TRUE );
::ShowWindow( hWndSb, SW_SHOW );
※ m_ScMinVal: 最小値、m_ScMaxVal = 最大値、m_ScPos=現在値 の変数
5) CFomr1View::OnSize()で、
// FormViewのScrollBarを表示させない
SetScrollSizes( MM_TEXT, CSize(cx,cy) );
CWnd::OnSize(nType, cx, cy );
// スクロールバーの位置調整
HWND hWndSb;
GetDlgItem(IDC_SCROLLBAR1, &hWndSb);
::GetClientRect( hWndSb, &rect );
::MoveWindow( hWndSb, 0, cy, cx, rect.Height(), FALSE );
::SetScrollPos( hWndSb, SB_CTL, this->m_ScPos, TRUE );
6) CFomr1View::OnHScroll() で、
HWND hWndSb;
GetDlgItem(IDC_SCROLLBAR1, &hWndSb);
::SetScrollPos( hWndSb, SB_CTL, this->m_ScPos, TRUE );
とやると、スクロールバーが表示されません。
何かアドバイスいただけませんか?
また、今、スクロールバーの表示位置調整や、ScrollPosのセットなんかを
Win32API関数使ってますが、MFCで(というか、CScrollBar m_sbHorz; を使って)
できないものなのでしょうか?
よろしくお願いします。
お礼
出来ました!! ありがとうございました