初めまして、よろしくお願いします
WinVista(SP2), VC++2010 SDKでプログラムしています
システムフォルダのMsftEdit.dllをLoadLibraryで読み込んで
CreateWindowExに
クラス名 MSFTEDIT_CLASS(実体はLRICHEDIT50W)
スタイル WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_NOHIDESEL
を指定してウィンドウに貼り付けてサブクラス化しています
リッチエディット付属(WS_VSCROLL, WS_HSCROLL)のスクロールバーでは
・ページ内に収まる行数 or 文字数になるとキャレットの位置がどこにあってもスクロ
ールの位置が0になってしまう
例えば、右に1ページ動いて1文字ずつ削除していくと、1ページに収まる文字数になる
と一気に左端へスクロールしてしまう
・ウィンドウサイズbottomが小さくなる時にキャレットが画面内にある場合常にキャレ
ットがウィンドウより下に行かないように移動される
その後ウィンドウを大きくするとキャレットはその場で止まって、次にスクロールバ
ーがクリックされると余白が表示されないように移動される
今の所この2点が気になったのでいくつか教えて下さい
-----1
付属のスクロールバーで上記2点が起こらないようにする方法
-----2
自前でスクロールする場合WM_*SCROLLが来たら
SetScrollInfo
ScrollWindowEx
UpdateWindow
return0;
という順番で呼んでいます
スクロールバーは正常に動いているのですがreturn0;直後の再描画でスクロール(画面)
が元に戻ってしまわないようにする方法(*)
-----2(*)
2chの方(win32api質問箱)ではScrollWindowEx後に画面の位置を記憶させるために
SendMessageを使うと言われたのですが後々釣りだった事がわかり打ち止めにしてきまし
た
そこで疑問なんですがScrollWindowEx後に画面の位置を記憶させるためのメッセージは
存在するのでしょうか?
-----3
リッチエディットにメッセージを送信する場合
EM_LINESCROLLをリッチエディットに送ってみた所垂直スクロールは正常に動作したので
すが水平スクロールは動作しませんでした
水平スクロールをさせる場合何か特別な事をしないといけないのでしょうか?
1, 2, 2-*, 3,の4点よろしくお願いします
垂直バーはEM_LINESCROLLを使用して
水平バーはデフォルトの動作に任せる事にしました
失礼しました