用MFC AvtiveX ControlWizard 创建了一个ActiveX控件,该控件要在网页上用,并且该控件的方法中需要使用到浏览该网页的IE的地址栏中的地址串。
那请问如何如何在ActiveX控件中获得IE地址栏中的地址呢??
谢谢!
那请问如何如何在ActiveX控件中获得IE地址栏中的地址呢??
谢谢!
解决方案 »
- 对CRC校验是否多余的问题?
- 怎样让按钮一直处于选中状态?
- windows程序设计中的小一段代码不理解,请指教.
- 要使树控件的父项没有图标,而子项都有图标应该如何实现呢?
- 关于文件、注册表安全属性的两个问题,谢谢解答
- 我做一断层剖面图,思路是这样的,用一数组data[1000][80000]存储数据,这些数据在-100到100之间,现在想在视窗内按数据打印这些点,并且
- 进程外服务器的事件回调内存泄漏, 我哪儿错了?
- 关于软件访问硬件的部分接口或访问其他部分(即软件如何访问硬件),对初学者来说应学习哪些方面的书籍,这提及到哪些知识点,请给于指导
- 派生类如何关联控件变量
- 如何由CRgn得到一组Polygon?
- 菜鸟求助!unresolved external symbol __CrtDbgReport
- 用winpcap3.1居然找不到pcap_open, pcap_findalldevs_ex的定义和声明
加了:
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite);STDMETHODIMP CVC404PCtrl::SetClientSite(IOleClientSite *pClientSite)
{
if (pClientSite != NULL)
{
// Obtain URL from container moniker.
CComPtr<IMoniker> spmk;
LPOLESTR pszDisplayName; if (SUCCEEDED(pClientSite->GetMoniker(
OLEGETMONIKER_TEMPFORUSER,
OLEWHICHMK_CONTAINER,
&spmk)))
{
if (SUCCEEDED(spmk->GetDisplayName(
NULL, NULL, &pszDisplayName)))
{
USES_CONVERSION; CComBSTR bstrURL;
bstrURL = pszDisplayName; ATLTRACE("The current URL is %s\n", OLE2T(bstrURL));
CoTaskMemFree((LPVOID)pszDisplayName);
}
}
} return S_OK;
// return IOleObject_SetClientSite(pClientSite);
}但是不行啊,该控件是继承于COleControl,而COleControl继承于CWnd,是一个窗口型的ActiveX控件,调试运行根本不能进入该函数.
用GetClientSite获得LPOLECLIENTSITE即IOleClientSite*,其它一样。
{
// TODO: Add your specialized code here and/or call the base class if (m_pControlSite != NULL)
{
// Obtain URL from container moniker.
CComPtr<IMoniker> spmk;
LPOLESTR pszDisplayName;
IOleClientSite *pClientSite = NULL;
m_pControlSite->QueryInterface(IID_IOleClientSite, (void**)&pClientSite);
if (SUCCEEDED(pClientSite->GetMoniker(
OLEGETMONIKER_TEMPFORUSER,
OLEWHICHMK_CONTAINER,
&spmk)))
{
if (SUCCEEDED(spmk->GetDisplayName(
NULL, NULL, &pszDisplayName)))
{
USES_CONVERSION;
CComBSTR bstrURL;
bstrURL = pszDisplayName;
ATLTRACE("The current URL is %s\n", OLE2T(bstrURL));
CoTaskMemFree((LPVOID)pszDisplayName);
CString strServerIP = OLE2T(bstrURL);
g_strServerIP = strServerIP.Mid(7);
int nPos = g_strServerIP.Find('/', 0);
if(nPos > 0)
g_strServerIP = g_strServerIP.Left(nPos);
}
}
} COleControl::OnSetClientSite();
}