お初にお目にかかります。ABビギナーのDarkSkyです。
今プログラミングの習作にと、アプリケーションを作っているのですが、それで少しお伺いしたい事があります。
RADツールでエディットボックスとボタンを作り、ボタンが押された時にEM_GETSELでカーソル位置を取得、
そしてカーソル位置に文字列を挿入・・・という風な形にしたいのですが、
エディットボックスにフォーカスがない時は、末尾に挿入したいのです。
最初はメッセージの返値でフォーカスの有無が分かるかな、と思ったのですが、
エディットボックスの先頭にカーソルがある場合、0が帰ってくる事が分かりました。
これでは先頭にカーソルがある(=先頭に挿入したい)か、フォーカスがない(=末尾に挿入したい)か判断できません。
この二つを簡単に判断する技はあるのでしょうか?
GetFocusとエディットボックスのハンドルを比べて・・・と思っていたのですが、重大な事実が発覚。
そもそもクリックイベントでこの判断を行うようにしているので、クリックしたボタンにフォーカスが移っちゃってます(泣
八方塞がりのようです。誰か教えて頂けませんか?
エディットボックスのカーソル位置取得について・・・。
Re: エディットボックスのカーソル位置取得について・・・。
> お初にお目にかかります。ABビギナーのDarkSkyです。
初めまして。ABのミドルユーザーぐらいにはなれたかな!?と思っている7です。
> エディットボックスにフォーカスがない時は、末尾に挿入したいのです。
エディットボックスのフォーカス状態を持つ変数を宣言し、それを判断してやることで、一応できました。
> そもそもクリックイベントでこの判断を行うようにしているので、クリックしたボタンにフォーカスが移っちゃってます(泣
失礼なんですけど、フォーカスを持つかどうかで判断して処理を行うこと自体が間違ってるんじゃないでしょうか?
こんな処理するの初めてなんですけど、結構する人多いんでしょうかね。
初めまして。ABのミドルユーザーぐらいにはなれたかな!?と思っている7です。
> エディットボックスにフォーカスがない時は、末尾に挿入したいのです。
エディットボックスのフォーカス状態を持つ変数を宣言し、それを判断してやることで、一応できました。
[ここをクリックすると内容が表示されます]
> GetFocusとエディットボックスのハンドルを比べて・・・と思っていたのですが、重大な事実が発覚。コード: 全て選択
Dim isEBFocus As BOOL ' エディットボックスのフォーカス状態を持つ
' エディットボックス1がフォーカスを持った時
Sub MainWnd_EditBox1_SetFocus()
isEBFocus=TRUE ' フォーカスを持っている
End Sub
' コマンドボタン1を押した時
Sub MainWnd_CommandButton1_Click()
If isEBFocus Then ' フォーカスを持っているなら
MessageBox(hMainWnd,"フォーカスを持っています。","isEBFocus",MB_OK)
isEBFocus=FALSE
Else ' フォーカスを持っていないなら
MessageBox(hMainWnd,"フォーカスを持ちません。","isEBFocus",MB_OK)
End If
End If
> そもそもクリックイベントでこの判断を行うようにしているので、クリックしたボタンにフォーカスが移っちゃってます(泣
失礼なんですけど、フォーカスを持つかどうかで判断して処理を行うこと自体が間違ってるんじゃないでしょうか?
こんな処理するの初めてなんですけど、結構する人多いんでしょうかね。
Re: エディットボックスのカーソル位置取得について・・・。
7さんご回答ありがとうございます。試してみると、期待通りの動作が得られました。感謝の限りです。
> 失礼なんですけど、フォーカスを持つかどうかで判断して処理を行うこと自体が間違ってるんじゃないでしょうか?
> こんな処理するの初めてなんですけど、結構する人多いんでしょうかね。
うーん、元々はフォーカス&カーソル位置に関係なく末尾に追加していたのですが、
これじゃあ不便だなという事でつけてみたんです。
もうちょっと他の方法も吟味してみる必要がありそうですね。
改めて、ありがとうございました。
> 失礼なんですけど、フォーカスを持つかどうかで判断して処理を行うこと自体が間違ってるんじゃないでしょうか?
> こんな処理するの初めてなんですけど、結構する人多いんでしょうかね。
うーん、元々はフォーカス&カーソル位置に関係なく末尾に追加していたのですが、
これじゃあ不便だなという事でつけてみたんです。
もうちょっと他の方法も吟味してみる必要がありそうですね。
改めて、ありがとうございました。