我做了一个可以托拽HTML数据的com,只要把某个网页的某一部分拖到指定的网页的div即可触发ondrop事件。
但是我拖过来的东西已经是乱码了,怎么办啊,比如从百度拖动某些东西,过来以后都是乱码,英文msdn网站问题不大。
是不是我取数据由问题呢?下面是我取数据的代码片断。
FORMATETC fmtetc = { RegisterClipboardFormat( _T("HTML Format") ), NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
if( SUCCEEDED(pData->QueryGetData( &fmtetc )) ) {
STGMEDIUM stgmedium;
if( SUCCEEDED(pData->GetData( &fmtetc, &stgmedium )) ) {
//Secceed in getting the data from the IDataObject
LPBYTE pHTML = (LPBYTE)GlobalLock( stgmedium.hGlobal );
DWORD nSize = GlobalSize( stgmedium.hGlobal );
//Put the Html into DIV
CreateLegacyWebPiece( pHTML, nSize ); GlobalUnlock( stgmedium.hGlobal );
GlobalFree( stgmedium.hGlobal );
return;
}
}
但是我拖过来的东西已经是乱码了,怎么办啊,比如从百度拖动某些东西,过来以后都是乱码,英文msdn网站问题不大。
是不是我取数据由问题呢?下面是我取数据的代码片断。
FORMATETC fmtetc = { RegisterClipboardFormat( _T("HTML Format") ), NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
if( SUCCEEDED(pData->QueryGetData( &fmtetc )) ) {
STGMEDIUM stgmedium;
if( SUCCEEDED(pData->GetData( &fmtetc, &stgmedium )) ) {
//Secceed in getting the data from the IDataObject
LPBYTE pHTML = (LPBYTE)GlobalLock( stgmedium.hGlobal );
DWORD nSize = GlobalSize( stgmedium.hGlobal );
//Put the Html into DIV
CreateLegacyWebPiece( pHTML, nSize ); GlobalUnlock( stgmedium.hGlobal );
GlobalFree( stgmedium.hGlobal );
return;
}
}
msdn2.microsoft.com/en-us/library/ms649015.aspx
LPBYTE pHTML = (LPBYTE)GlobalLock( stgmedium.hGlobal );这个时候,pHTML好像就是乱码了。怎么办呢?
INT nScores = 255; IMultiLanguage2* pIMultiLanguage2 = NULL;
HRESULT hr = CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER, IID_IMultiLanguage2, (void**)&pIMultiLanguage2);
hr = pIMultiLanguage2->DetectCodepageInIStream(
MLDETECTCP_8BIT,
0,
m_spStream,
info,
&nScores); if (hr){
::MessageBox(NULL, _T("OK"),_T("Warning"),MB_ICONSTOP);
}
pIMultiLanguage2->Release();
运行到DetectCodepageInIStream时,程序就停了,为什么阿。