2014-08-29 44 views
1

我有一個需要使用COM對象的傳統Win32應用程序(WndProcs等)。通過使用一些小的ATL頭文件和一些簡單的智能指針,然而我目前正在努力的是如何最好地汲取COM對象的事件?在傳統Win32應用程序中實現COM事件接收器

我目前的工作計劃是建立第二個COM對象(作爲一個DLL),它處理所有的沉沒事件,並使用Windows消息與遺留應用程序進行通信。這是「好的」,但有很多來回移動的消息讓遺留應用程序做我想做的事。

是否有一種容易獲得的方式讓Win32遺留應用程序直接沉入COM事件與通過第二個「sinker」com對象運行?

在我深入瞭解這個過程之前,我想看看是否有其他人遇到過這個問題,並有一個工作解決方案。

謝謝!

+1

「...直接沉沒COM事件...」:*其中*?連接點設計*需要*接口*指針,在通過調用['Advise()']註冊所述接口後,它發送其事件(http://msdn.microsoft.com/zh-cn/庫/窗/桌面/ ms694318(v = vs.85)的.aspx)。這就是連接點的工作原理。如果您問是否必須*實現*該事件目標接口掛起的COM對象作爲基於DLL的inproc服務器,則答案爲否,但無論如何您都需要一個接口。您如何提供該界面完全取決於您。 – WhozCraig 2014-08-29 12:41:32

+0

ATL ['IDispEventImpl'](http://msdn.microsoft.com/zh-cn/library/06wtz4t5.aspx)接受通過連接點和「IDispatch :: Invoke」傳遞的「典型」ActiveX控件事件。 – 2014-08-29 13:37:35

+0

傳統應用程序使用什麼編譯器? – 2014-08-30 21:32:14

回答

相關問題