

チャイルドウィンドウタイプのモードレスダイアログを表示すると
マウスでエディットボックス(など)をクリックしてもフォーカスが移動しない
という現象がおきています。(tabキーではOK)
数年前に一度作ったときの記憶を頼りに作っているのですが、下記以外に設定などが必要になるのでしょうか?
…というか、このやり方で問題ないのでしょうか?…
◎環境
WindowsXP
Visual C++ 6.0 & MFC
アプリケーションの種類…SDI
◎やったこと
1.ダイアログリソースを追加
リソースのプロパティ
「一般」タブ
ID…「IDD_DIALOGA」
「スタイル」タブ
スタイル…チャイルド
境界線…ダイアログ枠
その他…すべてoff
「その他のスタイル」タブ
可視のみon
「拡張スタイル」、「その他の拡張スタイル」タブ
すべてoff
このダイアログにいくつかのボタンやエディットボックスを配置
2.親windowのヘッダファイルに追加したもの
private:
dialogA *pDlg;
3.親windowのソースファイルに追加したもの
BOOL CModlessDialogApp::InitInstance()
にコードを追加
……
// フレームをリソースからロードして作成します
pFrame->LoadFrame(IDR_MAINFRAME,
WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
NULL);
//↓↓ここから追加↓↓
pDlg = NULL;
pDlg = new dialogA();
if(pDlg)
{
pDlg->Create(IDD_DIALOGA);
pDlg->ShowWindow(SW_SHOWNA /*SW_SHOW|SW_RESTORE*/);
}
//↑↑ここまで追加↑↑
// メイン ウィンドウが初期化されたので、表示と更新を行います。
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();
……
スタイルを「オーバーラップ」「ポップアップ」にするとマウスクリックでフォーカスが移動します。
No.1ベストアンサー
- 回答日時:
> 3.親windowのソースファイルに追加したもの
と書いておられますが、追加しているのは親ウインドウの中でなく、Appに追記されているのですよね?
追加部分のコードは、pFrameのクラスのOnCreate内に記述すべきなのではないでしょうか?
それと、今手元に開発環境が無いのでうろ覚えですが、DialogのCreate関数には、親ウインドウを指定する引数があったかと。これを明示的に指定してやるべきだと思います。
もう一つ。ダイアログテンプレートの設定ですが、有効化がチェックを入れられていないのでは?(これっぽいなぁ…)
オーバーラップ・ポップアップでは、モーダル動作開始前にウインドウが有効化されるので動作するわけですが。(これだなぁ、多分)
pDlg作成後に「EnableWindow()」を呼んでみて下さい。
ご回答ありがとうございます。
原因と思われることを1つづつ試してみましたが状況は変わりませんでした。
そのため、ダイアログベースで作り直すことにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Windows 95・98 Windows11にバージョン アップしました。 2 2023/07/21 18:36
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Word(ワード) Wordです教えてくださいお願いします 2 2023/07/15 23:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SetWindowLong()でタイトルバー...
-
ボタンの配置を変更したい
-
フォーム上のリストボックスに...
-
ダイアログボックスで指定した...
-
チャイルドダイアログボックス...
-
vbscriptで、ファイル選択ダイ...
-
【VC++2005】ダイアログサイズ...
-
コンボボックスのドロップダウ...
-
VC++.NET DLLからのダイアログ...
-
リソースファイルとは・・・
-
ボタンの表示の色、フォントを...
-
「C++」で「ピクチャーボックス...
-
'int' から 'LPCSTR' に変換で...
-
ダイアログのボタンが押せない
-
エクセルで作った新しいウイン...
-
グラフの交点の求め方(Excel)
-
「アイテムは収集されました」...
-
コントロールの書式設定で、“コ...
-
コンボボックス内の文字サイズ変更
-
DateTimePickerでに年月までし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ボタンの表示の色、フォントを...
-
C# ボタンコントロール内で文字...
-
メッセージボックスを大きくす...
-
フォーム上のリストボックスに...
-
リソースファイルとは・・・
-
ダイアログの上のテキストボッ...
-
MFCダイアログボックスを最前面...
-
メッセージボックスのボタン文...
-
コンボボックスのドロップダウ...
-
ボタンの配置を変更したい
-
ダイアログボックスで指定した...
-
'int' から 'LPCSTR' に変換で...
-
ダイアログのボタンが押された...
-
ダイアログ最前面表示時の後ろ...
-
ダイアログの表示位置の保存
-
confirmダイアログの表示文字に...
-
ダイアログ間のメッセージの送...
-
エディットコントロールの色の...
-
MFC ポップアップメニューのチ...
-
vbscriptで、ファイル選択ダイ...
おすすめ情報