2017-01-20 64 views
3

對於ActiveX開發,我應該使用什麼? MFC或ATL?
Microsoft Documents它說我們可以使用MFC來構建ActiveX控件。但是當我在Google上搜索時,我看到一些人提到ATL對這項工作很有幫助。這是我從Wikipedia得到的,這似乎證實了這個論點。
MFC vs ATL for ActiveX

另一方面,在不需要MFC的圖形用戶界面部件的情況下,ATL是一種更輕量級的替代方案。

我該用什麼?如果我可以同時使用它們,那麼使用它們的優點和缺點是什麼?

回答

5

使用ATL。我在MFC中開發了20多年。對於絕大多數用途來說,ATL是更好的選擇,因爲它更輕量且易於理解 - 雖然兩者都有一個陡峭的學習曲線。

我會選擇MFC在ATL的使用的唯一理由是:

1)我有一個非常投入的ActiveX/Windows控制我寫是有意義寫的窗戶控制它的一部分MFC,因此在MFC中搭載控件的COM接口是有意義的。然而,對於補充對象(比如返回一個Object的屬性),我會使用ATL,除非它們也是一個非常複雜的窗口控件。

2)我必須爲文檔類型使用OLE(對象鏈接和嵌入),並且使用MFC內置的框架更容易。

我一直在研究20年以上的同一個MFC項目,一個非常複雜的Windows程序。程序的大部分內容都由COM公開。我們有MFC COM和ATL COM的混合。當我第一次開始時,以及在ATL獲得牽引力之前,我通常在MFC中實現COM對象。現在,除非出於上述兩個原因,我使用ATL。

但是,這只是一個意見。

4

儘管可以使用MFC構建ActiveX組件,但ATL被設計爲輕量且更高效的低開銷替代方案。而且,你也可以在ATL的頂部使用WTL作爲GUI部件。

如果你想要一個較小的低開銷的ActiveX組件,我會建議使用ATL(和WTL)。

4

ATL在這裏是我的第一!

它在設計界面和COM對象處理如何極其靈活的情況下更加靈活。

ATL還允許輕鬆構建雙界面。 MFC只是一個簡單的IDispatch實現。

即使在我的MFC應用程序中,我在內部只對所有COM部件使用ATL。