描述:
我对这个方面还不是很了解
我现在想试着做一个ACTIVEX控件,类似于3721的搜索功能:当在地址栏中输入内容的时候就在旁边出现一个小框。
或者是在工具栏上出现一个搜索栏。
我想问,为了实现这个功能我应该怎么在VC 6.0中创建什么工程
怎么具体实现
以及如何在网页中调用
说个大致的过程就可以了
有示例代码最好
谢谢了
解决方案1:
第1步,利用VC向导,建立一个“MFC ActiveX ControlWizard”工程,项目名可定为“TmpOcx”。一路默认下去完成向导。
第2步,在CtmpOcxCtrl类的“MFC ClassWizard”里切换到“Automation”页,添加属性和方法。
点击“Add Property”按钮,添加一个“MsgContext属性,类型为BSTR,
点击 “Add Method”添加一个“ShowMessage”方法,没有返回.
第3步:实现属性和方法。
在CtmpOcxCtrl类里添加一个私有变量m_MsgContext。
Private:
CString m_MsgContext;
(2)属性实现方法:
BSTR CTmpOcxCtrl::GetMsgContext()
{
return m_MsgContext.AllocSysString();
}
void CTmpOcxCtrl::SetMsgContext(LPCTSTR lpszNewValue)
{
if (m_MsgContext.Compare(lpszNewValue) != 0 )
{
m_MsgContext = lpszNewValue;
SetModifiedFlag();
}
}
(3) ShowMessage实现方法:
void CTmpOcxCtrl::ShowMessage()
{
AfxMessageBox(m_MsgContext);
}
第4步:编辑属性编辑框。
(1)在资源编辑器,编辑属性对话框
(2)给输入框控件添加关联变量,也是利用MFC Classwizards来实现,
(3) 在CtmpOcxCtrl类的DoPropExchange方法里添加如下代码,关联属性。
PX_String(pPX,"MsgContext",m_MsgContext,"欢迎使用此Acitvex,呵呵");
至此,除了事件之外,别的功能都实现了。
第5步,添加事件。
在这里,我们添加一个当MsgContext属性被改变时的通知事件。实现很简单,请看如下步骤:
在类CtmpOcxCtrl的MFC ClassWizards向导里的“Activex Event”页里,添加一个事件,
(2)在CTmpOcxCtrl类的SetMsgContext方法里,触发MsgContext值变的事件。
void CTmpOcxCtrl::SetMsgContext(LPCTSTR lpszNewValue)
{
if (m_MsgContext.Compare(lpszNewValue) != 0 )
{
m_MsgContext = lpszNewValue;
FireOnMsgChange();
SetModifiedFlag();
}
}
最后编译运行,将自动注册此Ocx。
在控件中实现功能后,设置相应的属性或方法,在网页中调用
UP