1

メディアコントロールを作成するためにいくつかのATL関数を使用していますが、ATLオプションへの動的リンクしか使用できないようです。ATLへの静的リンクに切り替えると、コントロールを正常に作成できません。

私は困惑している。誰でも私を助けることができますか?

これが私のコードです:

//related headers
#include <wmp.h>
#include <atlbase.h>
#include <atlcom.h>
#include <atlhost.h>
#include <atlctl.h>

//related vars
CAxWindow  m_wndView;  // ActiveX host window class.    CComPtr<IWMPPlayer>  
m_spWMPPlayer;  // Smart pointer to IWMPPlayer interface.

//related function code:
CComPtr<IAxWinHostWindow>  spHost;
HRESULT  hr;
m_wndView.Create(m_hWnd, rect, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
hr = m_wndView.QueryHost(&spHost);
/*
when I switch to "Static Link to ATL" option, I will fail here
E_FAIL == hr;//the failure flag
*/
if(!SUCCEEDED(hr)) return FALSE;

hr = spHost->CreateControl(CComBSTR(_T("{6BF52A52-394A-11d3-B153-00C04F79FAA6}")), m_wndView, 0);
if(!SUCCEEDED(hr)) return FALSE;

hr = m_wndView.QueryControl(&m_spWMPPlayer);
if(!SUCCEEDED(hr)) return FALSE;
4

1 に答える 1

0

ATL への静的リンクの場合、プリプロセッサを使用する必要があります: _ATL_DLL、

ここで設定できます: プロパティ ページ | C/C++ | プリプロセッサ

于 2013-01-12T13:10:58.087 に答える