ダイアログのスタイル、ポップアップとオーバーラップの違い

[戻る]
Palmer 2012/10/24(水) 18:06:50
環境:Win XP、VC6.0SP6、MFC

EXEからDLL内のダイアログをモードレスで表示させていますが、
対象のモードレスダイアログのスタイルがポップアップの場合に
Alt+Enterを押すことでフリーズしてしまいます。

ダイアログのスタイルをオーバーラップに変更すると、
フリーズは発生しなくなりました。

ポップアップとオーバーラップの使い分け方を教えていただけないでしょうか。

ロマ 2012/10/24(水) 20:05:08
SDKでわたしの知っていることは、
・WS_POPUPだとGetParentがオーナーウィンドウのHWNDを返す
・WS_OVERLAPPEDだとGetParentはゼロを返す
です。

MFCは詳しくないのですが、ひょっとしたら
DLLからCWnd::GetParentを呼び出すと本物のCWndを返さないのかもしれません。

ロマ 2012/10/24(水) 20:21:31
連投すまんです。

Alt+Enterとは、メインフレームがアクティブなときにAltキーを押した状態でEnterキー
を押すということでしょうか、あるいは、Altキーを押し離し、直後にEnterキーを押す
ということでしょうか。
前者ならば対応するアクセラレータが登録されていると思います。
後者ならば、メニューバーの最も左側のメニュー項目を選択しポップアップメニューを
表示しようとしている状態を意味しています。

Palmer 2012/10/25(木) 16:01:13
[[解決]]
ロマさん、ありがとうございます。

Alt+Enterに関してはテキストコントロールで改行しようとして
Excelのようにキー入力して現象が発覚しました。

アクセラレータの登録はなかったのですが、
GetPartentは使用していなかったので、
とりあえずオーバーラップのスタイルで様子を見ることにします。

古いスレッドには追加発言できません。