タブコントロール上のチャイルド画面スクロール – プログラミング – Home

タブコントロール上のチャイルド画面スク...
 
通知
すべてクリア

タブコントロール上のチャイルド画面スクロール


tamami
 tamami
(@tamami)
ゲスト
結合: 20年前
投稿: 13
Topic starter  

VC++.net WinXPPro

よろしくお願いいたします。
タブコントロール上の
スクロールバーと画面スクロールについて質問です。

■画面は3つあり、
①メイン画面
---タブコントロールを貼り付けてある
②チャイルド画面
---タブ画面Aとして使用

■メイン画面は小さく、Aのチャイルド画面の高さが
可也の長さがあります。

メイン画面のタブコントロール内で縦スクロールにより
Aをスクロールして見られるようにしたいのです。

■この場合、
スクロールバーは
A画面のプロパティ「Vertical ScrollBar」=Trueとして
OnVScrollイベントで処理すべきでしょうか?

それともメイン画面のタブコントロール上に
「スクロールバー」を貼り付けて、処理すべきでしょうか?

前者のプロパティで試してみたところ、
デバッグした際のタブコントロール上に表示されたのは
A画面のスクロールバーも途中で途切れてしまうものでした。

そこで、後者に切り替えたのですが、
OnVScrollイベント内の処理で
以下のように記述したところ、
スクロールバーはマウスクリック等にちゃんと反応するのですが、
その次の肝心な画面の移動は行われません。
-----------------------------------------
//スクロールバー処理
SCROLLINFO info;
pScrollBar->GetScrollInfo(&info);
int myMax = info.nMax - info.nPage + 1;
int pos = pScrollBar->GetScrollPos();
switch( nSBCode ){
case SB_TOP: // 左端へスクロール
pos = 0;
break;

(中略)

case SB_ENDSCROLL: // スクロール終了
return;
}
if( pos < info.nMin )pos = info.nMin;
if( pos > myMax ) pos = myMax;
pScrollBar->SetScrollPos(pos);

//画面移動処理(試しに動くことだけ確認したいのでスクロールに関わらず同じ処理)
CRect rRect;
m_tabctrl.GetWindowRect( &rRect );
m_CTab1.ScrollWindowEx(0,0,&rRect,&rRect,NULL,NULL,SW_SCROLLCHILDREN);
m_CTab1.InvalidateRect(NULL,TRUE);
m_CTab1.UpdateData(FALSE);

-----------------------------------------
※m_tabctrl ・・・ メイン画面のタブコントロールのメンバ変数
m_CTab1 ・・・ A画面(クラス)の変数

画面表示が全く変わらず、どうしたらいいのかわかりません。
試しに、m_Ctab1.m_CTab1.MoveWindow(0,0,40,40,TRUE);
のようにしたところ、タブコントロールからはみ出して上に行ってしまいました。

どのようにしたらうまくタブコントロール内で、
A画面がスクロールされるようになるのでしょうか。

よろしくお願いいたします。


引用解決済
トピックタグ
tamami
 tamami
(@tamami)
ゲスト
結合: 20年前
投稿: 13
Topic starter  

すみません、少しですが自己解決いたしました。

m_CTab1.ScrollWindowEx(0,0,&rRect,&rRect,NULL,NULL,SW_SCROLLCHILDREN);

m_CTab1.ScrollWindowEx(0,0,NULL,NULL,NULL,NULL,SW_SCROLLCHILDREN);

とし、

m_CTab1.UpdateWindow();
を加えたところ、ちゃんとタブコントロール内でスクロールされるようになりました!

でもこれですと下へのスクロールしか出来ないので上へは
スクロールされません。

あと、NULLとする事が果たしてよいとされるのでしょうか。

よろしくお願いいたします、


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました