リッチエディットのスクロールについて – プログラミング – Home

リッチエディットのスクロールについて
 
通知
すべてクリア

[解決済] リッチエディットのスクロールについて


フクダ
 フクダ
(@フクダ)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

環境:windowsXP VC++2003 MFC

はじめまして。フクダと申します。
質問させて頂きます。

MDIの開発を行っています。
ビューをリッチエディットビューにしました。

子ウィンドウに文字を入れ垂直スクロールを行うと、
当たり前ですが文字がスクロールバーに付随して動きます。
この場合だと、例えば下にスクロールをすると
文字が徐々に上に行き、非クライアント領域に隠れます。

これをメモ帳のように、スクロールすると行単位でスクロールが
行われる(徐々に上に隠れたりしない)ようにしたいのですが
方法が分りません。

どなたか御教授下さい。


引用未解決
トピックタグ
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

以前に似たようなことをやりました。
ただし、リッチエディットビューではなく、スクロールビューでした。
なので、同じようにうまくいくかどうかは分かりませんが、

まず、SetScrollSizes()で矢印ボタンのスクロール幅を行単位になるように設定
した上で、WM_VSCROLL のメッセージハンドラを実装して、マウスでのスクロール
も行単位になるように丸めました。

void CxxxView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
switch(nSBCode)
{
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
// 任意位置へのスクロールは、行区切り位置へ補正する
{
// スクロールサイズの取得
INT nMapMode;
CSize ViewSize, PageSize, LineSize;
GetDeviceScrollSizes(nMapMode, ViewSize, PageSize, LineSize);
// スクロールサイズの行高さで丸める(四捨五入)
nPos = (UINT)((DOUBLE)nPos / (DOUBLE)LineSize.cy + 0.5) * LineSize.cy;
}
break;
default:
// それ以外はデフォルトの処理とする
break;
}

CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}


返信引用
フクダ
 フクダ
(@フクダ)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

bun様

さっそくの回答ありがとうございました。
解決の糸口が見えました。

教えて頂いた方法で行けそうです。

今後ともよろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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