エディットボックスの文字列表示 – プログラミング – Home

エディットボックスの文字列表示
 
通知
すべてクリア

[解決済] エディットボックスの文字列表示


はる
 はる
(@はる)
ゲスト
結合: 21年前
投稿: 34
Topic starter  

エディットボックスに文字列をSetWindowTextで表示しているのですが、
表示時、文字列の先頭から最後までの領域を選択されたまま表示されてしまいます。
エディットボックスのタブストップのチェックもはずしているし、
Setsel(-1,-1)でも試してみましたが、選択は解除できませんでした。
ダイアログでは、エディットボックス1つのみでボタンはありません。
そのダイアログにボタンを追加すると、エディットボックスの文字列は
選択されないようになりましたが、ボタンなしで表示させたいのです。
文字列を選択されずに表示できる方法が他にありましたら教えてください。

WinXP VC6.0 MFCです。
よろしくお願いします。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

タブストップのチェックは直接関係ないような気がします。
エディットコントロールの規定の動作がそうなっているようなので
プロパティを弄っても駄目のようです。
今まで私が作ったソフトも皆そういう動きでした。

どうしても選択させたくないのであれば、やはりSetSelを使う方法だと
思います。ただし、SetWindowTextを行ったハンドラ内で行っても
実際の選択関係の処理は表示が動作している時に行われているようなので
再選択されてしまうような形になると思います。
一度、そのハンドラから抜けてからSetSelしないと駄目でしょう。
スマートな方法ではありませんが、ハンドラを抜ける前にTimerを掛けておいて
OnTimerでSetSelすればうまくいくと思います。
この時にKillTimerするのを忘れないようにしてください。
入力しないのであれば、読み取り専用にしても選択されないと思いますよ。

Windows全体の操作感にあわせるという観点からすると無理に解除しなくても
良いような気もします。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

EN_SETFOCUSのハンドラでSetSelすればうまくいくと思います。


返信引用
はる
 はる
(@はる)
ゲスト
結合: 21年前
投稿: 34
Topic starter  

SetTimerでSetSelをしたら、きちんと選択解除されました。
他のダイアログでのエディットボックスでも、
文字列は選択はされていない状態で表示させているので、
今回質問したダイアログのエディットボックスでも
選択されていない状態で表示したいので、
教えていただいた選択を解除させる方法で表示させたいと思います。
ありがとうございました!!


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

dairygoodsさんのEN_SETFOCUSの方がスマートですね。

ただ、他の画面の場合は単に初期表示のときにそこにフォーカスがなかったから
選択されていないだけだと思いますよ。
そこにフォーカスが移動すれば、選択状態になると思います。
私が操作感をあわせるといっているのは、そういう意味です。

dairygoodsさんの方法の場合、フォーカスがあたった時はいつも選択状態にならない
ようになると思うので、本来の操作感から考えるなら何もしないで選択状態のままに
しておくのが良いと思うのですけれどねぇ。

ちなみに私の方法だとフォーカスが当たり直されると選択状態になります。
まあ、初期化フラグを持っておいて最初のEN_SETFOCUSだけSetSelする方法もあるから、
そっちの方がスマートかなぁ。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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