CString 对象的 AllocSysString 方法将 CString 转化成 BSTR的方法:
CString s;
s = "i love you";
BSTR b = s.AllocSysString();
CString 对象的 AllocSysString 方法将 CString 转化成 BSTR的方法:
CString s;
s = "i love you";
BSTR b = s.AllocSysString();
VS2003调试DLL, 不中断的问题,直接把所有工程 rebuild all,然后再 替换新生成的dll,再设置断点,调试
CHttpFile 获取URL重定向后的文件名
// 获取URL重定向后的文件名,如果没有重定向,也返回下载文件名
CString GetFileNameFromRedirectUrl(CString strUrl)
{
CInternetSession iSession;
CStdioFile* pFileDown = NULL;
CString sFileName;
pFileDown = iSession.OpenURL(strUrl, 1, INTERNET_FLAG_TRANSFER_BINARY);
CHttpFile* pHttpFile = (CHttpFile *)pFileDown;
HINTERNET hHttpFile = HINTERNET(*pHttpFile);
//获得重定向文件名
BOOL bResult = pHttpFile->QueryOption(INTERNET_OPTION_URL, sFileName);
int flag=sFileName.ReverseFind('/');
CString strFileName=sFileName.Mid(flag+1);
return strFileName;
}
错误: _malloc 已经在 Libcmtd.lib 中定义, 引发的思考:
C++编译器选项:/MT,/MTd,/Md,/MDd
必须让工程所使用的库都使用相同的配置,否则就会有相应的警告或错误提示,甚至出现无法解析的函数,
有时,我们使用的库不是自己可以控制的,那么就只能把工程属性设置成你使用库的选项相同,这样可以编译通过了.
用CHtmlView接口获取HTML源文件:
支持在UNICODE工程下获取HTML代码,无乱码。。。。发了两年多了才知道,害得我找了一晚上,没想到自己的博客里就有。。。
BOOL CWeb::GetSource(CString& strString)
{
IHTMLDocument2* pHtmlDoc2 = (IHTMLDocument2*)GetHtmlDocument();
// check if HtmlDocument initialized
if( pHtmlDoc2 != NULL)
{
IHTMLDocument3* pHTMLDoc3 = NULL;
HRESULT hr = pHtmlDoc2->QueryInterface(IID_IHTMLDocument3, (LPVOID*)&pHTMLDoc3);
ASSERT(SUCCEEDED(hr));
if(pHTMLDoc3)
{
IHTMLElement* pDocElem=NULL;
hr = pHTMLDoc3->get_documentElement(&pDocElem);
ASSERT(SUCCEEDED(hr));
if(pDocElem)
{
BSTR bstrHTML;
pDocElem->get_outerHTML(&bstrHTML);
pDocElem->Release();
USES_CONVERSION;
//MessageBox(OLE2T(bstrHTML), _T("源文件"));
strString = OLE2T(bstrHTML);
SysFreeString(bstrHTML);
}
pHTMLDoc3->Release();
}
pHtmlDoc2->Release();
pHtmlDoc2=NULL;
}
return TRUE;
}