ホームページ >バックエンド開発 >C#.Net チュートリアル >サブダイアログボックスの作成と破棄

サブダイアログボックスの作成と破棄

伊谢尔伦
伊谢尔伦オリジナル
2016-11-21 11:44:491572ブラウズ

1. ダイアログ ボックスを表示します

1.1 モーダル ダイアログ ボックスを表示します:

CDialogDemo dlg;
dlg.DoModal();

1.2 非モーダル ダイアログ ボックスを表示します:

1.CDialog::OnOK(); OK ボタンが押されました CDialog ::OnCancel(); //キャンセル ボタンが押されました

3.CDialog::EndDialog( IDD );モーダル ダイアログ クラス Box

は、モーダル ダイアログ クラスの PostMessage(WM_CLOSE) を通じて独自のダイアログ ボックスを閉じることができます。 [メッセージ ボックス] ダイアログ ボックスを閉じると、モーダル ダイアログ ボックスも閉じます。

参照コードは次のとおりです:

CDialogDemo *dlg=new CDialogDemo(this); 
dlg->Create(IDD_GENERAL_CONTROL); 
dlg->ShowWindow(SW_SHOW);

4. いくつかの関連する重要な関数の詳細な説明

4.1 CloseWindow
関数関数: この関数は、指定されたウィンドウを最小化しますが、ウィンドウを破壊しません。

関数プロトタイプ: BOOL CloseWindow(HWND hWnd);

パラメータ: hWnd: 最小化されるウィンドウのハンドル。

戻り値: 関数が成功した場合、戻り値は 0 以外になります。関数が失敗した場合、戻り値は 0 になります。さらに詳しいエラー情報を取得したい場合は、GetLastError 関数を呼び出してください。

注: ウィンドウのサイズはアイコンに最小化され、画面のアイコン領域に移動されます。ウィンドウを表示せずにウィンドウのアイコンを表示し、アイコンの下にウィンドウのタイトルを表示します。アプリケーションは、DestroyWindow 関数を使用してウィンドウを破棄する必要があります。


4.2 DestroyWindow

機能: 指定されたウィンドウを破棄します。この関数は、WM_DESTROY メッセージと WM_NCDESTROY メッセージを送信することにより、ウィンドウを無効にし、キーボード フォーカスを削除します。この関数はまた、ウィンドウのメニューを破棄し、スレッドのメッセージ キューをクリアし、ウィンドウ プロセスに関連するタイマーを破棄し、クリップボードのウィンドウの所有権を解放し、クリップボード ビューアの表示チェーンを中断します。
関数プロトタイプ: BOOL DestroyWindow(HWND hWnd // 破棄するウィンドウのハンドル);
hWnd: 破棄するウィンドウのハンドル。

戻り値: 関数が成功した場合、戻り値は 0 以外になります。関数が失敗した場合、戻り値は 0 です。さらに詳しいエラー情報を取得したい場合は、GetLastError 関数を呼び出してください。

注: スレッドはこの関数を使用して、他のスレッドによって作成されたウィンドウを破棄することはできません。このウィンドウが WS_EX_NOPARENTNOTIFY スタイルを持たない子ウィンドウである場合、ウィンドウが破棄されると、WM_PARENTNOTIFY メッセージが親ウィンドウに送信されます。 Windows CE: この関数は WM_NCDESTROY メッセージを送信しません。

4.3 EndDialog

関数: この関数はモーダル ダイアログ ボックスをクリアし、システムにダイアログ ボックスの処理を終了させます。
関数プロトタイプ: BOOL EndDialog(HWND hDlg, int nResult);
パラメータ: hDlg: クリアされるダイアログ ウィンドウを示します。 NResult: ダイアログ作成関数からアプリケーションに返される値を指定します。

戻り値: 関数呼び出しが成功した場合、戻り値は 0 以外になります。関数呼び出しが失敗した場合、戻り値は 0 になります。エラー情報を取得したい場合は、GetLastError関数を呼び出してください。

注: DialogBox、DialogBoxParam、DialogBoxlndirect、および DialogBoxlndirectParam 関数によって作成されたダイアログ ボックスは、EndDialog 関数を使用してクリアする必要があります。アプリケーションはダイアログ ボックス アプリケーション内から EndDialog 関数を呼び出します。この関数は他の目的には使用できません。ダイアログ ボックス アプリケーションは、WM_INITDIALOG メッセージの処理中であっても、いつでも EndDialog 関数を呼び出すことができます。アプリケーションが WM_INTDIALOG メッセージ処理中にこの関数を呼び出した場合、表示および入力フォーカスが設定される前にダイアログ ボックスがクリアされます。 EndDialog 関数は、ダイアログ ボックスをすぐには消去しません。代わりに、フラグを設定して、ダイアログ ボックス アプリケーションが制御をシステムに戻すことができるようにします。システムは、アプリケーション キューから次のメッセージを取得する前にフラグを検出します。フラグが設定されている場合、システムはメッセージ ループを終了し、ダイアログ ボックスをクリアし、ダイアログ ボックスを作成した関数から返された値として nResUlt の値を使用します。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。