モードレスダイアログのエディットボックスのエンター – プログラミング – Home

モードレスダイアログのエディットボック...
 
通知
すべてクリア

[解決済] モードレスダイアログのエディットボックスのエンター


秋桜
 秋桜
(@秋桜)
ゲスト
結合: 20年前
投稿: 20
Topic starter  

 こんばんわー、今回はモードレスダイアログ上のエディットボックスにおける
決定というか、IDOKの出し方についてお聞きしたいと思い書き込みさせて
いただきました。
 今まではモーダルダイアログにてダイアログを作成していたのですが、諸所の事情に
よりモードレスダイアログに変更しなくてはならなくなりました。そこでモードレス
ダイアログを作成、表示はできたのですがモーダルダイアログだとエディットボックス
上でエンターを押せばIDOK=決定になっていたのですがそれがモードレスダイアログで
作成したらなくなってしまいました。仕様であるとは思うのですが、依然同様にエンタ
ーで決定(IDOK)状態にすることは可能なのでしょうか?

 ご返信のほどよろしくお願いいたします。


引用未解決
トピックタグ
メイ
 メイ
(@メイ)
ゲスト
結合: 20年前
投稿: 16
 

可能だと思います。

CDialog::PreTranslateMessage(MSG* pMsg)中で
「エンターキー押下中、かつフォーカスがエディットボックス内」の場合に
CDialog::OnOk()を呼ぶとできるかと。


返信引用
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 20年前
投稿: 20
Topic starter  

 返信ありがとうございます、でも申し訳ありません、私の書き忘れなのですが、
開発環境は.netでSDKなのです。私の調べが足らないだけかも知れませんがメイ様が
書いてくださった方法はMFCでの方法のようです。そこでもう一度質問させていただき
ます。SDKでモードレスダイアログのエディットボックス内にフォーカスがある状態で
エンターで決定(IDOK)状態にすることは可能なのでしょうか?

 ご返信のほどよろしくお願い足します。


返信引用
モトロ
 モトロ
(@モトロ)
ゲスト
結合: 20年前
投稿: 1
 

詳しくは分かりませんが、MFCでもSDKでも内部的には同じじゃないでしょうか。
SDKでPreTranslateMessageに値するものを調べてみればいかがでしょう?

やってないですが、キーダウンしたメッセージをダイアログボックスより先に取得できれ
ばいいのでは。


返信引用
SG
 SG
(@SG)
ゲスト
結合: 20年前
投稿: 4
 

エディットボックスをサブクラス化して
WM_KEYDOWNなどを処理すればできると思います。


返信引用
Rtty
 Rtty
(@Rtty)
ゲスト
結合: 20年前
投稿: 1
 

普通にメッセージループに IsDialogMessage() を入れればいいって話では?(^^;
#現状、[Tab] キーなんかも効いてないんじゃないかしら。

Creating a Modeless Dialog Box
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/winui/winui/windowsuserinterface/windowing/dialogboxes/usingdialogboxes.asp

MFC の CDialog::PreTranslateMessage() に相当する処理は、
SDK では GetMessage() と IsDialogMessage() の間に挟みます。

...などと、ほとんど SDK 経験の無い自分が言うのも何ですが。(^^;;;


返信引用
たく
 たく
(@たく)
ゲスト
結合: 21年前
投稿: 29
 

DM_GETDEFIDというのを処理してあげればいいです。


返信引用
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 20年前
投稿: 20
Topic starter  

返信ありがとうございました。メッセージループにIsDialogMessage()を追加して
やりましたら思ったような動作をするようになりました。返信してくださったメイ様
モトロ様、SG様、Rtty様、たく様、本当にありがとうございました^^


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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