2009-02-23 23 views
7

我正在開發VC6時代的MFC程序。當時有一個類嚮導,在註釋中使用了一堆裝飾器和標記來解析類文件。像VS/MFC仍然使用「afx_msg」裝飾器的東西?

例如,它會在其維護的消息處理程序的前面插入afx_msg。它將標記// {{AFX_MSG_MAP(TheApp)/}} AFX_MSG_MAP註釋以幫助它查找它想要處理的消息映射的各個部分。

AFAIK,這不再需要。除此之外,類嚮導還有很多缺點,我們不得不對這些託管塊進行大量手動編輯,而且我們從來沒有經常使用它。

是否有任何其他原因繼續使用afx_msg之流?

回答

10

afx_msg仍然存在,但一直是純粹的信息。一個裝飾者,就像你說的那樣。它總是被定義爲一個空字符串。

自VS2003以來,{{和}}標記不再需要:VS現在已經足夠聰明,可以將事物放在正確的位置而不必依賴這些標記。您會注意到VS2003 +不再在其創建的項目中包含這些行。

2

AFAIK,afx_msg不再使用。另一個標記用於幫助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。

相關問題