エディットボックスのフォーカス取得を禁止したい。 – プログラミング – Home

エディットボックスのフォーカス取得を禁...
 
通知
すべてクリア

[解決済] エディットボックスのフォーカス取得を禁止したい。


なべ
 なべ
(@なべ)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

シリアル通信の送受信データをエディットボックスへ表示するプログラムを作成しています。

エディットボックスは、プロパティで「読み取り専用」をクリックしているのですが、エディットボックス上でマウス
をクリックするとカーソル位置はその位置へ移動してしまう様で、次の送受信データをその位置に書き込
んでしまいます。

フォーカスの取得を禁止すればいいのかな?と思っているのですが、その方法が解りません。
EnableWindow(FALSE)とすれば一応目的は達成されるのですがグレー表示になってしまい、うま
くありません。

ちなみに、データの表示は送受信時にReplaseSelを使用してテキストデータとして書き足しています。

開発環境は、VisualC++ 6.0 でダイアログベースのプログラムです。

ご多忙中申し訳ありませんが、宜しくご指導の程、御願い致します。


引用未解決
トピックタグ
yas0302
 yas0302
(@yas0302)
ゲスト
結合: 23年前
投稿: 37
 

BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->hwnd == m_edit1.m_hWnd )
{
if( pMsg->message == WM_LBUTTONDOWN ||
pMsg->message == WM_RBUTTONDOWN
)
{
return TRUE ;
}
}
return CDialog::PreTranslateMessage(pMsg);
}

こんなん、どーでしょう?
他に、もっといい方法がありそうですが。。。


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

ReplaseSelの直前に、
SetSelでカーソルを最後に持っていくのではダメでしょうか?


返信引用
なべ
 なべ
(@なべ)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

dairygoodsさん

私もその方法を試みたのですが、最終のカーソル位置を指定するにはどうすれば良いのでしょ
う?

int n;

m_ed1.GetWindowText(ss);
n = ss.GetLength();
m_ed1.SetSel(n,n);

とやったら、うまくいきませんでした。
使い方おかしいですか?


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

> m_ed1.GetWindowText(ss);
> n = ss.GetLength();
> m_ed1.SetSel(n,n);
>
> とやったら、うまくいきませんでした。

正しいように見えますが、どうなってしまうのでしょう?


返信引用
なべ
 なべ
(@なべ)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

お騒がせしました。
ただのコーディングミスでした。

掲題の問題は、yas0302さんに教わった方法で対策し、dairygoodsさんに教わった方法は別件
の対策でそれぞれ利用させて頂くことにしました。

今回は、色々と勉強になりました。

ありがとうございました。


返信引用
駄犬
 駄犬
(@駄犬)
ゲスト
結合: 23年前
投稿: 59
 

エディットボックスである必要がなければ、スタティックコントロールを使う手もありかと。


返信引用
なべ
 なべ
(@なべ)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

ご意見ありがとうございます。

しかし、スクロールバーを使用したいのでNGだと思います。

スタティックコントロールでは、スクロールバー付きませんよね?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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