A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>ドキュメント/ビューアーキテクチャについて復習しました。
>これはウインドウのクライアント領域を操作するクラス(ビュー)と、そこに表示するデータを操作するクラス(ドキュメント)を明確に分ける事を言うようですが、
>この場合はどういう意味で破綻するということを意味しておられるのでしょうか?
ドキュメントビューアーキテクチャーでは、各クラスがそれぞれの役割を担当することで、それぞれ他のクラスの状態に影響されること無く処理を記述することが出来ます。
特にこの場合は、ドキュメントは表示範囲の指定(ビュー)に全く影響を受けずに表示内容を出力する処理を記述することが出来ます。
しかし、
>画面を表示する際にスクロールバーの位置を取得して、
>スクロールバーが右側になっていれば画面の右側を
>描画(描画開始位置を左にする)という処理にする。
となると、ビューやフレームの状態によって、ドキュメントが影響を受けてしまい、表示範囲を意識した出力を行わなければいけなくなります。
破綻とは、この部分を差します。
>ということはプロジェクトを最初から作り直さないと無理ということになるのでしょうか?
CScrollViewはCViewの派生クラスですので、ウィザードによって作成されるコードはほとんどCViewのときと変わりません。
一部、スクロール範囲を指定するメソッドを呼んだりといった処理がウィザードによって追加されますが、たいした量ではありません。
一旦、ウィザードで
1.今までの設定(おそらくCView)でウィザードで新しいプロジェクトを作成する。(作成中のプロジェクトと同名で)
2.CScrollViewの設定で、ウィザードで新しいプロジェクトをもうひとつ作成する。
3.1と2で生成されたViewのソースの違いをチェックし、それを作成中のプロジェクトに反映する。
といった感じで平気です。
回答ありがとうございます.お礼遅くなり,申し訳ありません.
>>一旦、ウィザードで
1.今までの設定(おそらくCView)でウィザードで新しいプロジェクトを作成する。(作成中のプロジェクトと同名で)
2.CScrollViewの設定で、ウィザードで新しいプロジェクトをもうひとつ作成する。
3.1と2で生成されたViewのソースの違いをチェックし、それを作成中のプロジェクトに反映する。<<
それを見比べた所
CView→CScrollViewに置き換えて
void CMyView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: このビューのサイズの合計を計算します。
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
}
を追加したのですが,エラーになってできませんでした.どこがいけないでしょうか?
No.3
- 回答日時:
>cs.style = cs.style | WS_HSCROLL;
>
>を追加。
だめですよ。こんなやり方でスクロールバー表示させちゃ。
MFCのドキュメントビューアーキテクチャーが破綻します。
ウィザードの6/6で基本クラスをCViewをCScrollViewにするだけです。
これでスクロールバーが必要なときに表示されますし、内容も一緒にスクロールします。
回答ありがとうございます。
>MFCのドキュメントビューアーキテクチャーが破綻します。
ドキュメント/ビューアーキテクチャについて復習しました。これはウインドウのクライアント領域を操作するクラス(ビュー)と、そこに表示するデータを操作するクラス(ドキュメント)を明確に分ける事を言うようですが、この場合はどういう意味で破綻するということを意味しておられるのでしょうか?
>ウィザードの6/6で基本クラスをCViewをCScrollViewにするだけです。
>これでスクロールバーが必要なときに表示されますし、内容も一緒にスクロールします。
ということはプロジェクトを最初から作り直さないと無理ということになるのでしょうか?
No.2
- 回答日時:
> 一行だけで出すことができるとは。
標準的な部品のON/OFFの場合は、比較的簡単です。
> 通常のスクロールバーのように右へ行くと画面が変わるようにするにはどうすればいいのでしょうか?
こうなると結構面倒で、
SetScrollRangeなどでスクロールバーの範囲、位置を定義してやる。
画面を表示する際にスクロールバーの位置を取得して、スクロールバーが右側になっていれば画面の右側を描画(描画開始位置を左にする)という処理にする。
MFCが提供してくれるのはあくまでも部品だけですので、その部品を使ってどう動作させるかはプログラムに書く必要があります。もっとも、極力簡単に書けるような部品が提供されてはいますが…。
> またこういうものはどうやって調べるといいのでしょうか?
基本はヘルプです。
読み方はコツがいりますが、MFCとかSDKとか書かれた項目を必要に応じて使い分けます。MFCとは?Win32SDKとは?という所まで理解していると、調べる速度がだいぶ変わってきます。
上記の「SetScrollRange」というキーワードが分かれば、webで「SetScrollRange サンプル」なんかでソースコードを検索してみるのも良いでしょう。
--
スクロールバーの振る舞いが極端に違うものとして、
[スタート]-[プログラム]-[Visual Studio]-[Microsoft Visual Studio 6.0 ツール]-[Zoomin]
ってのがあります。
こちらは縦スクロールバーを拡大倍率の指定に使っていますね。
回答ありがとうございます.Zoominというのがあるのを初めて知りました.こんな使い方もあるのですね!教えて頂いたやり方で調べたのですが,ソースコードはなかなか見つかりませんでした.
No.1
- 回答日時:
> メインのウインドウ
どうやって作成するメインのウィンドウなのか不明なので、可能/不可能も回答しづらいのですが…。
[ファイル]-[新規作成]
「新規作成」ウィンドウ
「プロジェクト」タブ
「MFC AppWizard(exe)」選択
プロジェクト名:Test
OK
「MFC AppWizard - ステップ1」ウィンドウ
SDIを選択
終了、OK
[表示]-[ワークスペース]のClassViewで、
Testクラス
CTest01View::PreCreateWindowに、
cs.style = cs.style | WS_HSCROLL;
を追加。
でOKなハズ。
回答ありがとうございました。一行だけで出すことができるとは。恥ずかしや恥ずかしやf(^^;MFCの入門書は持っているのですが、書いてなくて分かりませんでした。
neKo_deuxさんのおかげで望みの水平スクロールバーは出せたのですが、右へスクロールしてもすぐに元に戻って右へ画面が移動してくれません。通常のスクロールバーのように右へ行くと画面が変わるようにするにはどうすればいいのでしょうか?またこういうものはどうやって調べるといいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- プリンタ・スキャナー Brother MFC-7460DNの一時停止解除について 1 2022/12/03 12:38
- gooブログ 記事の下にスクロールバーが表示される 2 2022/08/19 20:42
- 数学 初歩的な質問で申し訳ないのですが、 平面における直線→y=ax+b 空間における直線→ax+b=y= 2 2022/04/01 13:22
- 物理学 間隔2dの大きさの等しい平行板電極A,Bがある。質量mの物体Cの両側に, 自然長d,ばね定数kの2個 1 2022/12/26 12:46
- 物理学 高校物理 水平な床面上の点Aから、水平と角θをなす向きに速さv0、質量mの小球aを高さhの点Bで静止 1 2022/06/06 17:53
- その他(住宅・住まい) 至急 トイレ温水洗浄便座を設置にあたり質問があります。 温水洗浄便座説明書に記載がある取り付け手順と 8 2022/10/25 18:24
- 一戸建て ユニットバスを追い焚きなし、にした場合自動湯張り機能は使えないのでしょうか? 1 2023/04/01 21:38
- 小学校 食塩水問題です 4 2022/12/09 18:31
- その他(住宅・住まい) 大工さんにお尋ねします・・・「砥石を水に浸けっ放しにする際の゛劣化”について 1 2022/09/09 19:11
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
MFCでのスクロールバーの扱い
C言語・C++・C#
-
ダイアログをスクロールさせるには
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
-
4
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
5
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
6
ダイアログのスクロールバー
C言語・C++・C#
-
7
MFC ダイアログ上のID取得について
C言語・C++・C#
-
8
CScrollViewの使用方法について
C言語・C++・C#
-
9
コンボボックスの高さを変更したい。
C言語・C++・C#
-
10
MFCでOnPaintのタイミング
C言語・C++・C#
-
11
CString から LPCTSTRの型に変換
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFCで水平スクロールバー
-
文字列格納について・・・
-
Varianntメモリリークについて
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
変数名の付け方
-
レコード件数の表示
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
サーブレットコンテキストの意...
-
dllと同じプロジェクトにする方法
-
private static という変数の修飾
-
C#でフォームのオブジェクト名...
-
VB.netでメソッドからコントロ...
-
JSPで<SELECT>の中にDBから持っ...
-
関数内の変数に<summary>コメン...
-
1 つのヘッダファイルに複数の...
-
Labelコントロールに数字を代入...
-
tryの終了
-
エクセルVBA 画像を貼り付ける...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGridで特定の行のスタイル...
-
LV_ITEM構造体のメンバlParamに...
-
MFCで水平スクロールバー
-
4バイト整数を使っているため
-
セットアップ先のPCでエラー
-
文字列格納について・・・
-
python3 各引数の意味と、引数...
-
Varianntメモリリークについて
-
iPhone アプリ開発のデザインに...
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
変数名の付け方
-
レコード件数の表示
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
Java初級 引数に適用できません
-
グローバルIPとプライベートIP...
-
servletからjspへオブジェクト...
-
パワーポイントのVBAでテキスト...
おすすめ情報