プライベートMFCとは何ですか?また、通常のインターフェイスを通じてアクセスできないのはなぜですか?

StackOverflow https://stackoverflow.com/questions/2044999

  •  20-09-2019
  •  | 
  •  

質問

私はGUI開発にMFCを使用しており、自分がやろうとしていることに役立つ機能に出くわしました。関数は_afxcompareclassnameです。ただし、ディレクトリにある「afxixpl.h」のファイルに含まれています "vc/altmfc/SRC/MFC/afxixpl.h "。通常のMFCを含むディレクトリ" vc/atlmfc/含む".

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

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

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

プライベートMFCに関する情報を入手できてうれしいですが、これまでのところ何もないようです。

どうもありがとう、JC

役に立ちましたか?

解決

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

MFCには、必要なことを行う機能が組み込まれています。それは呼ばれています runtime_class, 、そしてこれがMSDNのサンプルコードです:

// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );

他のヒント

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top