首先说一下环境
OS:winXP SP2
IDE:VC++2005 SP1
WTL8.0
dialog程序 里面加了三个 用MFC写的ActiveX控件(已经注册),然后 import路径 定义接口变量...
代码:
以一个控件为例
CAxWindow m_wndVocx;
CComPtr<_DVocx> m_vocx;
.....
m_wndAocx = GetDlgItem(IDC_AOCXCTRL);//绑定ID
//下面是得到_DVocx接口
HRESULT hr = m_wndVocx.QueryControl(&m_vocx);
ATLASSERT(hr == S_OK);
//m_vocx得到了值
但是发现 编译后的 vocx.tlh文件中
一个方法也没有struct __declspec(uuid("9a6104af-0e26-4a90-961f-3c6d2fb3a569"))
_DVocx : IDispatch
{//空的};为什么会这样 不解中!!!!
请高手指点 是要自己添加吗?不应该啊
我插入一个flash控件的时候 他的tlh文件里面的方法都有啊
郁闷中
OS:winXP SP2
IDE:VC++2005 SP1
WTL8.0
dialog程序 里面加了三个 用MFC写的ActiveX控件(已经注册),然后 import路径 定义接口变量...
代码:
以一个控件为例
CAxWindow m_wndVocx;
CComPtr<_DVocx> m_vocx;
.....
m_wndAocx = GetDlgItem(IDC_AOCXCTRL);//绑定ID
//下面是得到_DVocx接口
HRESULT hr = m_wndVocx.QueryControl(&m_vocx);
ATLASSERT(hr == S_OK);
//m_vocx得到了值
但是发现 编译后的 vocx.tlh文件中
一个方法也没有struct __declspec(uuid("9a6104af-0e26-4a90-961f-3c6d2fb3a569"))
_DVocx : IDispatch
{//空的};为什么会这样 不解中!!!!
请高手指点 是要自己添加吗?不应该啊
我插入一个flash控件的时候 他的tlh文件里面的方法都有啊
郁闷中
这个又是怎么回事呢?
//
// typelib filename: aocx.ocx[
uuid(AD5FE9A2-4D42-4DBB-A9EA-4D7AAFA112BD),
version(1.0),
helpstring("aocx ActiveX Control module"),
helpfile("aocx.hlp"),
helpcontext(00000000),
custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 83951780),
custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1197075952)]
library AOCXLib
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb"); // Forward declare all types defined in this typelib
dispinterface _DAocx;
dispinterface _DAocxEvents; [
uuid(94561183-AD27-4373-BC0B-2177A89D7955),
helpstring("Dispatch interface for Aocx Control"),
hidden
]
dispinterface _DAocx {
properties:
[id(0x00000001)
]
VARIANT_BOOL IsOpen;
[id(0x00000002)
]
long nMyPort;
[id(0x00000003)
]
long nGroupID;
[id(0x00000004)
]
long nMyUIN;
methods:
[id(0x00000005)]
long initialize();
[id(0x00000006)]
long SetRCode(
long ComType,
long MPackSize,
long EchoVal,
long G723);
[id(0x00000007)]
long SetTCode(
long ComType,
long MPackSize,
long PreVal,
long SilenSup,
long MaxFrames,
long G723);
[id(0x00000008)]
long SetDest(
BSTR sDestIP,
long nPort);
[id(0x00000009)]
long SetRPort(long nPort);
[id(0x0000000a)]
long SetLoginNATSvr2(
long myUIN,
long DestUIN,
long myPort,
long DestPort,
BSTR sServerIP,
long nSrvPort);
[id(0x0000000b)]
long SetMVolume(
long dID,
long vol);
[id(0x0000000c)]
long SetNetwork(
BSTR sIP,
long nPort,
BSTR sProxyIP,
long nProxyPort,
BSTR sUserName,
BSTR sPass);
[id(0x0000000d)]
long SetSVol(
long dID,
long vol);
[id(0x0000000e)]
long StartRecv(long waveoutDID);
[id(0x0000000f)]
long StartTran(long waveinID);
[id(0x00000010)]
long StopRran();
[id(0x00000011)]
long StopRecv();
[id(0x00000012)]
long Destroy();
[id(0x00000013)]
long GetErrorCode(long val);
[id(0x00000014)]
long MCURegPort(long nPort);
[id(0x00000015)]
long MCUSendAudio();
[id(0x00000016)]
long MCUSetNetwork(
BSTR sSvrIP,
long nPort);
[id(0x00000017)]
VARIANT_BOOL MicrophoneAvailable();
[id(0x00000018)]
VARIANT_BOOL SpeakerAvailable();
[id(0x00000019)]
long MCUPause(VARIANT_BOOL bStop);
[id(0x0000001a)]
long PCMDataDestination(
BSTR sIP,
long nPort);
[id(0xfffffdd8)]
void AboutBox();
}; [
uuid(DF6D9735-7F9C-4FFE-AB7E-DD57B2CAA841),
helpstring("Event interface for Aocx Control")
]
dispinterface _DAocxEvents {
properties:
methods:
[id(0x00000001)]
void OnErrCode(
long nCode,
BSTR sMsg);
[id(0x00000002)]
void OnConnect(VARIANT_BOOL bConn);
}; [
uuid(EC7B8046-67CD-4B5B-B56E-2BF6BF56D215),
helpstring("Aocx Control"),
control
]
coclass Aocx {
[default] dispinterface _DAocx;
[default, source] dispinterface _DAocxEvents;
};
};