このノートでは、内部の Windows メッセージと MFC によって使用されるリソース形式について説明します。この情報は、フレームワークの実装について説明し、アプリケーションのデバッグに役立ちます。すべてこの情報が正式にサポートされていないにもかかわらず、冒険には、この情報の一部高度な実装を使用可能性があります。
このノートには、MFC のプライベート実装の詳細が含まれています;すべての内容変更する、将来です。MFC プライベート Windows メッセージの適用範囲の 1 つだけで意味を持ちますが、将来のシステム全体のメッセージを含めるに変更されます。
リソースのタイプと範囲の MFC プライベート Windows メッセージ、予約済みの「システム」範囲で脇 Microsoft Windows によって設定されます。現在すべての番号範囲を使用して、将来的には、新しい番号の範囲を使用することがあります。現在使用の番号を変更することがあります。
MFC プライベート Windows メッセージ、範囲の 0x360 gt では、0x37F(&G)。
MFC プライベート リソースの型、範囲 0 xf 0-グアテマラには、0 xff(&G)。
MFC プライベート Windows メッセージ
比較的緩やかな結合ウィンドウ オブジェクトと C++ の仮想関数を適切ながありません必要がこれらの Windows メッセージ C++ の仮想関数の代わりに使用します。
これらのプライベートの Windows メッセージと関連付けられているパラメーター構造、MFC プライベート ヘッダーで宣言されている ' AFXPRIV。H'。このヘッダーを含むコードの記載されていない動作が壊れる可能性が高い将来のバージョンの MFC 依存可能性があることを警告します。
これらのメッセージを処理する必要が発生した場合、 ON_MESSAGEメッセージ マップ マクロを使用し、ジェネリック LRESULT、WPARAM、LPARAM 形式でメッセージを処理する必要があります。
WM_QUERYAFXWNDPROC
このメッセージは、作成されているウィンドウに送信されます。これは、場合は、WndProc を決定する方法として、作成プロセスの非常に初期が送信されるAfxWndProc 。AfxWndProcは 1 を返します 。
| wParam | 使用されていません。 |
| lParam | 使用されていません。 |
| 返します | AfxWndProcによって処理される場合 1 |
WM_SIZEPARENT
このメッセージ、フレーム ウィンドウがその直接の子に (CFrameWnd::OnSize呼び出しは、 CWnd::RepositionBarsを呼び出すCFrameWnd::RecalcLayout ) のサイズを変更中に送信される、コントロール バーをフレームの側面のまわりの位置を変更します。AFX_SIZEPARENTPARAMS構造が含まれている現在の使用可能なクライアントの四角形の親 (これは NULL にすることがあります) HDWP DeferWindowPosを呼び出すを再描画を最小限にするには。
| wParam | 使用されていません。 |
| lParam | AFX_SIZEPARENTPARAMS構造体のアドレス |
| 返します | (0) を使用しません。 |
メッセージを無視して、ウィンドウがレイアウトに参加しないことを示します。
WM_SETMESSAGESTRING
このメッセージをフレーム ウィンドウには、ステータス バーのメッセージ行を更新するために送信されます。文字列 ID または、LPCSTR (両方ではないが) 指定することができます。
| wParam | 文字列の ID (0) |
| lParam | LPCSTR 文字列 (または NULL) |
| 返します | (0) を使用しません。 |
WM_IDLEUPDATECMDUI
このメッセージのアイドル時間はアイドル時間更新の更新コマンド UI ハンドラーを実装するために送信されます。ウィンドウ (通常、コントロール バー)、メッセージを処理する場合は、 CCmdUIオブジェクト (または派生クラスのオブジェクト) を作成し、各ウィンドウ内の「項目」 CCmdUI::DoUpdateを呼び出します。これで、コマンド ハンドラー チェイン内のオブジェクトのON_UPDATE_COMMAND_UIハンドラーを確認します。
| wParam | BOOL bDisableIfNoHandler |
| lParam | (0) を使用しません。 |
| 返します | (0) を使用しません。 |
bDisableIfNoHandlerゼロ場合、 ON_UPDATE_COMMAND_UIもON_COMMANDハンドラーは、UI オブジェクトを無効にするには。
WM_EXITHELPMODE
このメッセージはCFrameWndにはコンテキストを終了するモードに転記されます。このメッセージの受信を開始、モーダル ループ終了CFrameWnd::OnContextHelp 。
| wParam | (0) を使用しません。 |
| lParam | (0) を使用しません。 |
| 返します | 使用されていません。 |
WM_INITIALUPDATE
彼らのために彼らの最初の更新を行うには安全な場合このメッセージ、ドキュメント テンプレートにより、フレーム ウィンドウのすべての子孫に送信されます。CView::OnInitialUpdateへの呼び出しにマップしますが、他のCWndの使用することができます-他のワンショット更新クラスの派生。
| wParam | (0) を使用しません。 |
| lParam | (0) を使用しません。 |
| 返します | (0) を使用しません。 |
WM_RECALCPARENT
このメッセージ ビュー ( GetParentを介して取得) 親ウィンドウ レイアウトの再計算を強制的に送信されます (通常、親はRecalcLayoutコールされます)。これは、ビューの合計サイズが大きくなるにつれてサイズでフレームを必要が OLE サーバー アプリケーションで使用します。
親ウィンドウがこのメッセージを処理する場合する必要があります TRUE を返します、クライアント領域の新しいサイズを lParam で渡された RECT を埋めます。これはCScrollViewのスクロール バー (は追加されると、ウィンドウの外側に配置) を正しく処理に使用するサーバー オブジェクトがインプレース アクティブ化。
| wParam | (0) を使用しません。 |
| lParam | LPRECT rectClient、NULL にすることがあります。 |
| 返します | True を設定すると、新しいクライアント四角形戻り、FALSE それ以外の場合 |
WM_SIZECHILD
このメッセージれている COleResizeBarでは、オーナー ウィンドウ ( GetOwner) を介して送信されるユーザーのサイズ変更バーのサイズ変更ハンドルのサイズを変更します。ユーザーが要求したので、フレーム ウィンドウの位置を変更しようとして、このメッセージを生成した COleIPFrameWndを応答します。
新しい四角形のクライアント座標に対して相対的にサイズ変更バーを含む、フレーム ウィンドウの指定、lParam でポイントです。
| wParam | (0) を使用しません。 |
| lParam | LPRECT rectNew |
| 返します | (0) を使用しません。 |
WM_DISABLEMODAL
このメッセージは、非アクティブ化されているフレーム ウィンドウが所有するすべてのポップアップ ウィンドウに送られます。フレーム ウィンドウがポップアップ ウィンドウを無効にするかどうかを決定します。
これは、フレームがモーダル状態に入るとき、ポップアップ ウィンドウに特別な処理を実行するまたは無効になって特定のポップアップのウィンドウを維持する使用できます。ツールヒントはこのメッセージを使用して、フレーム ウィンドウがモーダル状態には、たとえばが彼ら自身を破壊するには。
| wParam | (0) を使用しません。 |
| lParam | (0) を使用しません。 |
| 返します | ウィンドウが無効になります 0 非零、ウィンドウを無効にしないことを示します。 |
WM_FLOATSTATUS
このメッセージは、フレームがアクティブ化または別のトップレベルのフレーム ウィンドウが非アクティブにすると、フレーム ウィンドウが所有するすべてのポップアップ ウィンドウに送られます。これMFS_SYNCACTIVE CMiniFrameWndでの実装ではこれらのポップアップ ウィンドウのアクティブ化のトップ レベルのフレーム ウィンドウのアクティブ化を同期に使用します。
| wParam | 次の値のいずれかです。 FS_SHOW FS_HIDE FS_ACTIVATE FS_DEACTIVATE FS_ENABLE FS_DISABLE FS_SYNCACTIVE |
| lParam | (0) を使用しません。 |
戻り値は非ゼロFS_SYNCACTIVEがセットとウィンドウなるの場合する必要があります、親フレームがアクティブ化します。CMiniFrameWndは、ゼロ以外の値をスタイルに設定されているを返しますMFS_SYNCACTIVE 。
詳細についてを参照してくださいCMiniFrameWndの実装。
WM_ACTIVATETOPLEVEL
その「トップレベル グループ」ウィンドウはアクティブまたは非アクティブであるとき、最上位のウィンドウにこのメッセージが送信されます。ウィンドウが最上位レベルのグループの一部はない親 (所有者)、最上位ウィンドウかのウィンドウによって所有されている場合です。このメッセージはWM_ACTIVATEAPPに使用で似ていますが、異なるプロセスに属する windows が (OLE アプリケーションで共通) の 1 つのウィンドウ階層に混在している状況で動作。
WM_QUERY3DCONTROLS
このメッセージは、ウィンドウの作成時に CTL3D32 によって、ウィンドウをサブクラスする必要があるかどうかを確認するのに送信されます。DLL 既定の 3D コントロールが有効になってをCControlBar、CDialog、CPropertySheet と CFormView。 。
| wParam | (0) を使用しません。 |
| lParam | (0) を使用しません。 |
| 返します | ゼロ以外の値のサブクラス化と CTL3D.nbsp;戻り値の呼び出しを使用Ctl3dSubclassDlgEx 。(&N) |
WM_COMMANDHELP、WM_HELPHITTEST、WM_EXITHELPMODE
これらのメッセージは、状況依存のヘルプの実装で使用されます。テクニカル ノート 28詳細についてを参照してください。
MFC プライベート リソース形式
現在定義されている、1 つだけ MFC プライベート リソース形式RT_DLGINIT。
RT_DLGINIT リソース フォーマット
1 つの MFC プライベート リソース形式は、余分なダイアログの初期化情報を格納する使用されます。これには、コンボ ボックスに格納されている最初の文字列が含まれます。このリソースの書式を手動で編集するには、設計されていません Visual C によって処理されますが、。
Visual C とこのRT_DLGINITリソースは、MFC の関連の機能があるので、情報のリソースを使用して API の代替を使用する必要はありません。Visual C を使用して記述、保守、および長期的にアプリケーションを変換しやすくなります。
RT_DLGINITリソースの基本構造は次のとおりです。:
+---------------+nbsp;\|コントロール ID |UINT |+---------------+??????????????????? ||メッセージ # |UINT |+---------------+??????????????????? |データの |length |DWORD |+---------------+??????????????????? |繰り返し|データ |可変長 |各コントロール|...????? |形式 |メッセージ+---------------+??????????????????? /|0???????? |バイト+---------------+(&N)
繰り返しセクション コントロールには、メッセージを送信する id メッセージ # (通常 Windows メッセージ) を送ると、可変長のデータを。Windows メッセージをフォームに送信されます。:
SendDlgItemMessage (lt;コントロール ID >、< メッセージ # > 0、& <Data>)
これは、Windows メッセージをでき、データの内容は非常に一般的な形式です。Visual C のリソース エディターと MFC に Windows メッセージの限られたサブセットをのみサポート: CB_ADDSTRING リストの最初のコンボ ボックスの (データがテキスト文字列) - 選択肢を。
番号順テクニカル ノート|nbsp;カテゴリ別テクニカル ノート(&N)