1

私は GUI 開発に MFC を使用していますが、私がやろうとしていることに役立つ可能性のある関数を見つけました。関数は _AfxCompareClassName です。ただし、ディレクトリ「VC/altmfc/ src/mfc /afximpl.h」にあるファイル「afximpl.h」に含まれています。通常の mfc インクルードは、ディレクトリ "VC/atlmfc/ include " にあります。

私が収集したものから、src/mfc にあるファイルと関数はプライベート mfc と見なされ (この男によると)、使用すべきではありません。なんで ?この機能はいいですね。UI の現在の位置を知るのに役立ちます。

最終的に私がやりたかったのは、テキスト フィールド (編集コントロール) を編集するときのエスケープ/リターン キーの動作を変更することでした。私の質問は次のとおりです。

  • プライベート MFC 関数とは何ですか?
  • なぜそれらの関数を使用すべきではないのですか (私が集めたものからすると、それらは頻繁に変更されるため、使用すべきではないのです。別の理由はありますか?)
  • 私がやりたいことを行うためのよりクリーンな方法はありますか?

これまでのところ SO には何もないように見えるので、プライベート MFC に関する情報を入手できれば幸いです。

どうもありがとう、JC

4

2 に答える 2

5

「プライベート」MFC ファイルは、MFC の実装の詳細です。クラスのユーザーが private: データまたはメソッドに到達することを望まない、または期待しないのと同様に、MFC 実装レベルのユーティリティ コードに依存するべきではありません。MFC 実装の詳細で見つけられる優れた機能のほとんどは、どこかで公開されていることに注意してください。あなたはただ掘る必要があります。

MFC には、必要な機能が組み込まれています。これはRUNTIME_CLASSと呼ばれ、MSDN のサンプル コードは次のとおりです。

// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );
于 2010-01-11T21:23:36.670 に答える
2

外部インクルードフォルダーではなくソースツリーにあるため、「プライベート」です。

これらのファイルで定義されている関数は、MFC の実装の内部にあり、変更される可能性があるため、使用しないでください。

機能が本当に必要な場合は、コードを (適切な帰属とともに) コピーして、クラスの 1 つに入れることができますが、これは理想とはほど遠いものです。関数の名前も変更します。

于 2010-01-11T21:20:33.587 に答える