2009-02-23 4 views
7

私はVC6の日に戻って始まったMFCプログラムに取り組んでいます。当時は、クラスファイルを解析するために、一連のデコレータとマークアップをコメントに使用したクラスウィザードがありました。"afx_msg"デコレータのようなものはまだVS/MFCで使用されていますか?

たとえば、メッセージハンドラの前にafx_msgが挿入されます。 // {{AFX_MSG_MAP(TheApp)および/}} AFX_MSG_MAPのコメントブロックは、処理したいメッセージマップの部分を見つけるのに役立ちます。

AFAIKこれはもう必要ありません。それに加えて、クラスウィザードには非常に多くの欠点があり、管理されたブロックの手動編集を頻繁に行う必要がありました。

他にafx_msgとそのilkを使用する理由はありますか?

答えて

10

afx_msgはまだ存在していますが、常に純粋に有益でした。あなたが置いたようにデコレータ。空の文字列として常に定義されています。

VS2003:VSは現在、これらのマーカーに頼ることなく物事を正しい場所に置くのに十分なほどスマートなので、{{と}}マーカーは必要ありません。 VS2003 +は作成したプロジェクトにこれらの行が含まれなくなりました。

2

AFAIK、afx_msgは使用されなくなりました。もう1つのマーカーは、物事を置く場所をCWが理解するのを助けるために使用され、それらのいくつかはまだ使用されています(例:.cppファイル内のメッセージマップの場所)。ヘッダーファイルのものはおそらく削除するのがより安全ですが、私はそれらを任意に削除しません。

あなたの現在のVSバージョンで新しいダミーMFCプロジェクトを開始し、ウィンドウクラスといくつかのハンドラを追加し、現在作成されている表記を観察します。何も挿入されていないものはおそらく使用されなくなり、まだ挿入されているものはおそらくまだ何らかの形で使用されているでしょう)。

PS:MSは現在のCW編集に関する問題を十分に認識しており、VS2010では大部分が解決されると言われています。

1

AFAIKこれらはもう必要ありません。 VS2008のクラスウィザードではコメントは生成されず、以前のバージョンで生成された既存のコメントは使用されません。クラスウィザードは引き続きafx_msgデコレータを生成しますが、使用されません。

私の一般的なルールは、VC6の日からコードを扱うときは、すべてのコメントを削除することですが、afx_msgデコレータを残しておきます。デコレータはコードを読むときに役に立ち、メソッドがメッセージハンドラであることを指摘しています。

0

VS2008では、afx_msgは空の#defineです。 VC6から2005にアップグレードされたアプリケーションから、他のClassWizardに挿入されたdreckをすべて削除しました。私はClassWizardもまったく使用しません。

関連する問題