Re: 自作の子ウインドウでの文字列入力 ( No.1 ) |
- 名前:管理人 日時:2020/11/25 22:54
文字列入力はフォーカスがあるウィンドウでのみ行うことができます
子ウィンドウが最前面にいる時は子ウィンドウにフォーカスがあるので
メインウィンドウの文字列入力ができないのだと思います
試していないので成功するかは不明ですが、
文字列の入力を受け付けさせたいタイミングで
SetFocus( GetMainWindowHandle() );
↑こちらの処理を実行してメインウィンドウにフォーカスを移せば
文字列入力を受け付けさせることができるかもしれません
よろしければお試しください m(_ _)m
|
Re: 自作の子ウインドウでの文字列入力 ( No.2 ) |
- 名前:雑食のとと 日時:2020/11/26 02:30
管理人さま
お世話になっております。
お示しくださったSetFocusを使って文字列入力の受付をさせることはできました。
ただ、贅沢を言えば、見た目上フォーカスは子ウインドウにあるように見せたまま(アクティブ状態のまま)
DXライブラリのウインドウに文字列入力の受付をさせたいところです。
先ほどお教えくださったような何らかの関数を使って実装できるものなのでしょうか。
それともDxLibMakeからいじるなどしなければならないものでしょうか。
DXライブラリと直接関係のない範囲のお話で申し訳ないのですが、
お示しくださいますと幸いです。
よろしくお願いいたします。
|
Re: 自作の子ウインドウでの文字列入力 ( No.3 ) |
- 名前:ギウ 日時:2020/11/26 08:41
横から失礼します。
MakeKeyInput、SetActiveKeyInput、SetUseCharCodeFormat、SetKeyInputString、CheckKeyInput、
GetKeyInputString、GetKeyInputCursorPosition、GetIMEInputData、GetKeyInputSelectArea、GetIMEInputModeStr
この辺りがDXLibでの文字入力用関数ですが、
子ウインドウがDXLibと関係ない場合は、WindowsのAPI(上記と似た機能の関数)を使って自力で取得し、メイン画面に描画するとかでしょうか。
試してないので上手く行くかは分かりませんが、案ということで。
|
Re: 自作の子ウインドウでの文字列入力 ( No.4 ) |
- 名前:雑食のとと 日時:2020/11/26 12:34
管理人 さま、ギウ さま
ご提案くださりありがとうございます。
入力だけを取得してその後の処理は全てDXライブラリに任せたかったので、
メッセージ処理あたりで調べていましたところ、当掲示板の過去記事
(ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3202)
にて解決策を発見いたしました。
子ウインドウのプロシージャに少量手を加え、DXライブラリに処理を丸投げできるように仕向けるというものでした。
フォーカスは表向き最前面に置きたい自作の子ウインドウに向いたまま入力を受けるという
期待通りの動作が見込めたので上の記事を参考にプログラムに手を加えました。
現バージョンでも過去記事にあるプログラムと、
子ウインドウでIMEを適宜有効化させる処理を加えたところ
解決できることを確認しましたので、その旨のご報告と
下調べが足りずお手数をおかけいたしましたことをお詫びします。
いろいろな方策をご提示くださりありがとうございます。
|
Re: 自作の子ウインドウでの文字列入力 ( No.5 ) |
- 名前:雑食のとと(解決) 日時:2020/11/30 14:30
解決をつけ忘れていましたので今一度返信させていただきます。
重ね重ね、ありがとうございます。
|