
親ウインドーからクリエイトしたエディトウインドーにスクロールバーを取り付けるのですが、WM_VSCROLLが発生しません。
親ウインドー自体にエディトウインドーを取り付けるとWM_VSCROLLが発生しています。
子ウインドーでもWM_VSCROLLが発生する方法を教えてください。
1、親ウインドークリエイト
2、WM_CREATE発生
3、以下WM_CREATE内処理
3-1、h_エディトウインドー = CreateWindow("EDIT", "",・・・WS_VSCROLL・・・);
3-2、親ウインドーにスクロールバーSetScrollInfo(hwnd, SB_VERT , &scr , TRUE);
結果、スクロールバーは親とエディトボックスにそれぞれ2組のスクロールバーができますが
ツマミの移動でWM_CREATEが発生するのは親のツマミだけです。
3-2を記述しない場合は、子にバーは出来ますがWM_CREATE発生しません。
No.5ベストアンサー
- 回答日時:
>> if (HIWORD(wParam) == EN_VSCROLL)
>のEN_VSCROLLは(HMENU)ID_xxxにしないといけないようです。
HIWORD()とLOWORD()の違いは確認した方がよい…かと。
https://docs.microsoft.com/en-us/windows/desktop …
>ツマミをドラッグした時の位置が来ません、
>scr.nTrackPosには全く何も反応がありません。
https://docs.microsoft.com/en-us/windows/desktop …
SIF_TRACKPOSが必要かと思いますが、設定していますか?
ありがとうございます。
私が間違っていました、
case WM_COMMAND:
if(HIWORD(wp) == EN_VSCROLL)
{・・・}
で反応がありました、これからSIF_TRACKPOSを攻めてみます。
No.4
- 回答日時:
実験してみました。
EditBoxはスクロールの情報を親ウィンドウへ通知はしない…ようですな。
EN_VSCROLLは通知されるので、GetScrollInfo()で自分で取得しに行く…くらいしかできないかと。
case WM_COMMAND:
if (HIWORD(wParam) == EN_VSCROLL)
{
SCROLLINFO scr = { sizeof(SCROLLINFO), SIF_POS | SIF_RANGE | SIF_PAGE };
GetScrollInfo((HWND)lParam, SB_VERT, &scr);
}
こんな感じ?
nMaskは適当に設定してください。
さもなければ…サブクラス化してメッセージの横取り(のぞき見?)するしかないかと。
ありがとうございます。
> if (HIWORD(wParam) == EN_VSCROLL)
のEN_VSCROLLは(HMENU)ID_xxxにしないといけないようです。
ただ
GetScrollInfoのscr.nPosにはスクロールバーの位置は取れますが、
ツマミをドラッグした時の位置が来ません、
scr.nTrackPosには全く何も反応がありません。
よろしくお願いします。
WM_VSCROLLは魅力的ですから!!
No.3
- 回答日時:
>h3 = CreateWindow("EDIT",・・・ WS_CHILD | WS_VISIBLE
>| ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | WS_HSCROLL | WS_VSCROLL
>,0,0,0,0,h2, (HMENU)1, Instance, NULL);
親ウィンドウはh2ということなので、VM_VSCROLLが送られるとするとダイアログプロシージャになると思いますが、
WM_VSCROLLが受けられないと言っているのは「どのプロシージャ」です?
はい、
h3のテキストエディトのプロシージャーですが、
h3 = CreateWindow("EDIT",・・・の場合にVM_VSCROLLが来ません。
h3 = CreateWindow("登録名",・・・の場合は登録名の登録時に設定したプロシージャーにVM_VSCROLLが来ます。
"EDIT"にした場合は、テキストが開きますが、何処にもVM_VSCROLLが来ません。
"登録名"にした場合はテキストとして画面が開けませんがVM_VSCROLLが来ます。
テキスト画面でのVM_VSCROLLが欲しいのです。
よろしくお願いします。
No.2
- 回答日時:
>スクロールバーが作られるだけで、WM_VSCROLLが発生しません。
CreateWindow()はどう記述しています?
省略なしで。
EN_VSCROLLでは…スクロール位置が取れませんしねぇ。
EN_VSCROLLでGetScrollInfo()で取れるんかなぁ。
またまた、お返事が遅くなり申し訳ありません。
ウィンメイン関数で記述
h1 = CreateWindow(ClassName1,・・・HWND_DESKTOP, NULL, Instance, NULL);
メッセージループ処理での記述
h2 = CreateDialog(Instance, "登録名", h1, NULL);
メッセージループ処理での記述で登録したウインドープロシージャーのWM_CREATEで記述
h3 = CreateWindow("EDIT",・・・ WS_CHILD | WS_VISIBLE
| ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | WS_HSCROLL | WS_VSCROLL
,0,0,0,0,h2, (HMENU)1, Instance, NULL);
このh3画面でスクロール処理はできるが、h3で登録したウインドープロシージャーでWM_VSCROLLが発生しない
No.1
- 回答日時:
WinAPIで…なんてのは、ここ数年触っていませんけども。
>3-1、h_エディトウインドー = CreateWindow("EDIT", "",・・・WS_VSCROLL・・・);
>3-2、親ウインドーにスクロールバーSetScrollInfo(hwnd, SB_VERT , &scr , TRUE);
子ウィンドウに対してSetScrollInfo()はしないのですか?
回答ありがとうございました。
返事遅くなり申し訳ありません。
>子ウィンドウに対してSetScrollInfo()はしないのですか?
していますが、スクロールバーが作られるだけで、WM_VSCROLLが発生しません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
検索の画面がでなくなってしま...
-
ExcelのBOOKが消えた!
-
ゲームでは結局どっちが良いの?
-
C# ウィンドウハンドルの取得
-
C#でファイル転送プログラムWin...
-
クリスタルレポートからPDFを作...
-
「&HFFFF」「&H1A」とは?
-
EnumChildWindowsの使い方(VBA)
-
隠れたウィンドウの画面をキャ...
-
作成したウインドウのサイズを...
-
皆さん、おはようございます♪ ...
-
VBAで単一ブック複数窓を閉じる...
-
(ショートカットキー)Alt+...
-
Msgboxの変数の表示につ...
-
Tera Termに他のアプリから文字...
-
非アクティブのウィンドウを最...
-
エクセルで1行目から3行目が消...
-
勝手にウィンドウが開いて止ま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
皆さん、おはようございます♪ ...
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
ラジオボタンの初期指定
-
Vba LongPtrについて教えてくだ...
-
作成したウインドウのサイズを...
-
[VBA] UserForm を Excel の W...
-
ゲームでは結局どっちが良いの?
-
Excelの上下を固定したい
-
ExcelのBOOKが消えた!
-
「&HFFFF」「&H1A」とは?
-
指定したインアクティブウィン...
-
エクセルで1行目から3行目が消...
-
OutlookでRSSフィードやメモの...
-
UWSCで特定のChromeのタブをア...
-
VBA .Value=.Value ?
-
パソコン関連)何度消してもま...
-
Alt+P,Alt+NをPostmessageで送...
おすすめ情報
先の返事で
>このh3画面でスクロール処理はできるが、h3で登録したウインドープロシージャーでWM_VSCROLLが発生しない
と書きましたが、これは登録名をEDITにした場合で、登録名をh3で登録したウインドープロシージャーにした場合はWM_VSCROLLが発生しますが、エディトボックスではありません。
h3画面をエディトボックスにする方法を教えてください。