
eMbedded Visual C++ 4.0 、MFC 、ダイアログベースでプログラミングをしています。
リストビューのスクロールバーを非表示にしてCListCtrl::Scrollを使い別のプログラムからスクロールさせたく、
「EnableScrollBarCtrl」や「ShowScrollBar」を使ってみたりしましたが非表示にできません。
リストビューのプロパティで「スクロールさせない」にチェックすると、CListCtrl::Scrollによるスクロールができなくなってしまいます。
非表示でCListCtrl::Scrollでスクロールできる方法をご存知でしたら教えてください。
なぜ別のプログラムでスクロールさせたいのかといいますと複数のリストビューを連動させてスクロールさせたいためです。
eMbedded Visual C++ 4.0はVC++6.0と似ているようですのでそのあたりに詳しい方アドバイスをください。
No.1ベストアンサー
- 回答日時:
こんにちは。
実験してみた所、実現できましたのでご報告いたします。・VC++6.0, MFC, にて行いました。
・リストビューのスクロールをしないにチェックします(消したいようですので)
・単独のスクロールバー(IDC_SCROLLBAR1)をダイアログに貼り付けて、リストビューをスクロールさせています。
以下参考程度に。
void CKaiketuDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
//テスト用のスクロールバーに対して何かされた
if(::GetDlgCtrlID(pScrollBar->GetSafeHwnd()) == IDC_SCROLLBAR1)
{
//縦の移動量を示す変数
int vScroll = 0;
//何の操作か
switch(nSBCode)
{
//下方向関係が押された
case SB_LINEDOWN:
case SB_PAGEDOWN:vScroll = -10; break;
//上方向関係が押された
case SB_LINEUP:
case SB_PAGEUP:vScroll = 10;
}
//リストビューのクライアント領域をスクロールさせる
::ScrollWindowEx(m_listCtrl.GetSafeHwnd(), 0, vScroll, 0, 0, 0, 0, SW_SCROLLCHILDREN | SW_INVALIDATE);
//リストビュー内の全てのアイテムをスクロールさせる
for(int i = 0; i < m_listCtrl.GetItemCount(); ++i)
{
POINT ptPos = {0};
//アイテムの位置を取る
m_listCtrl.GetItemPosition(i, &ptPos);
//縦方向に向かって移動量を加算する
ptPos.y += vScroll;
//アイテム位置を設定する
m_listCtrl.SetItemPosition(i, ptPos);
}
}
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
No.2
- 回答日時:
こんにちは。
訂正です。
ScrollWindowEx()は必要ありませんでした。
アイテム位置を変更するだけでスクロール出来ます。
ありがとうございます。御礼が遅くなりすみません。
試したところ、うまくいきませんでした。
どううまくいかなかったかは・・・すみません忘れました。
スクロールバーが表示されてしまったような気がします。
プロパティの「スクロールさせない」はアイテムがすべて収まるのが前提なのかもしれません。
また、リストビューのアイテムには高さ調整用のイメージを貼り付けているのでそれが関係していたかもしれません。
とりあえず「スクロールさせない」はチェックせず、表示されてしまうスクロールバーの部分は他のコントロールで隠すことで一応の解決を見ました。
ほかにいい方法があれば教えていただけるとたすかります。
テストできるかは分かりませんが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
MFCのCListCtrlでスクロールを検出
C言語・C++・C#
-
MFCでのスクロールバーの扱い
C言語・C++・C#
-
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
-
4
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
5
エディットボックスのフォントを変えたい
C言語・C++・C#
-
6
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
7
コンボボックス表示文字列を取得する場合
C言語・C++・C#
-
8
ビジュアルC++でボタンの有効/無効
C言語・C++・C#
-
9
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
10
ラジオボタンのグループ化
C言語・C++・C#
-
11
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
12
C++でアボート(Abort)で処理が強制終了してしまう
C言語・C++・C#
-
13
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
14
スクロールバーでのピクチャーコントロールやリストビューの移動
C言語・C++・C#
-
15
MFC・ダイアログベースで、ダイアログの変更内容が反映されない・・・
C言語・C++・C#
-
16
TCHAR文字列内の検索について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Youtubeのバグ
-
PDFを(htmlのように)無限に縦...
-
Excelでワードアートや図を常に...
-
エクセルVBAでフォームのListbo...
-
大きい表へのスクロールバーの...
-
文章の自動スクロール
-
マウスでコロコロしたいんですが…
-
リストビューのスクロールバー...
-
アコーディオンで開かれたパネ...
-
TikTokLiteの自動スクロールの...
-
webページで横方向にアンカーを...
-
マウスホイールでスクロールで...
-
「Cancel = True」とはどういう...
-
デジタル時計の時刻合わせの方...
-
マイページはどこを開くの
-
Outlookでこのような表示がされ...
-
エクセルのシート上に別のシー...
-
小さな表示窓の呼び方は
-
Javascript_submit()完了後に処...
-
[Java] Edgeでのアドレスバー非...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Youtubeのバグ
-
PDFを(htmlのように)無限に縦...
-
TikTokLiteの自動スクロールの...
-
Excelでワードアートや図を常に...
-
リストビューをスクロールさせ...
-
エクセルVBAでフォームのListbo...
-
Visual Basicから Spreadのスク...
-
大きい表へのスクロールバーの...
-
webページで横方向にアンカーを...
-
アコーディオンで開かれたパネ...
-
resizeするとスマホで何度もリ...
-
ポストバック時のスクロール位...
-
リストビューのスクロールバー...
-
マウスオーバー→ホイール回転で...
-
MFCでのスクロールバーの扱い
-
vb,netでtextboxの文字を右から...
-
Excelで1.2行目だけ固定して...
-
一体の時間が経過してからCSSの...
-
html js 横軸の長いチャート
-
リストビューの表示開始行変更
おすすめ情報