我需要实现一个从网页抓取一段文字插入HTML文件的功能,利用CHtmlEditView显示HTML文件,利用COleDropTarget实现抓取文字的插入,以下是我重写的COleDropTarget:OnDrop代码:
BOOL COleEditDropTarget::OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point )
{
if (pDataObject->IsDataAvailable(CF_TEXT))
{
CFile* pFile;
CString szReceive; pFile = pDataObject->GetFileData(CF_TEXT);
if (NULL == pFile)
{
return FALSE;
} CArchive ar(pFile, CArchive::load);
ar.ReadString(szReceive); ar.Close();
delete pFile;
插入代码略
}
return TRUE;
}
可每次从pDataObject中读出的字符串都是一串类似韩文的古怪乱码,无论是用pDataObject->GetGlobalData()还是pDataObject->GetData()结果都一样,这究竟是什么原因?求各位高手解答,不胜感激!
BOOL COleEditDropTarget::OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point )
{
if (pDataObject->IsDataAvailable(CF_TEXT))
{
CFile* pFile;
CString szReceive; pFile = pDataObject->GetFileData(CF_TEXT);
if (NULL == pFile)
{
return FALSE;
} CArchive ar(pFile, CArchive::load);
ar.ReadString(szReceive); ar.Close();
delete pFile;
插入代码略
}
return TRUE;
}
可每次从pDataObject中读出的字符串都是一串类似韩文的古怪乱码,无论是用pDataObject->GetGlobalData()还是pDataObject->GetData()结果都一样,这究竟是什么原因?求各位高手解答,不胜感激!
解决方案 »
- Tab上列表控件风格显示问题
- GetOpenFileName函数造成死机?
- 用LoadImage() 方法加载bmp图像有大小限制吗?
- 关于WM_PAINT消息
- socket客户端端口不能长期使用一个端口吗?
- 基于对话框的程序,如何实现类试ie的具有chev功能的工具条
- 关于ADO存储数据的顺序问题
- 请问 String Table( Editor Window )这个窗口如何生成或显示出来??
- 如何实现打开一个ICON文件或BMP文件并将其显示出来?
- 请问怎样才能捕获到硬盘被打开的消息(例如:在自己编写的应用程序中单击命令按钮,直接进入资源管理器;或,当捕获到硬盘被打开的消息时拒绝
- 程序运行出错(winocc.cpp)
- 使用HTTP上传文件源程序DEMO
所以现在还是只能用UNICODE,如果是要改变抓取文字的编码的话,又不知道应该怎么改。
2 const char* utf8 = "你";
3 wchar_t unicode;
4 unicode = (utf8[0] & 0x1F) << 12;
5 unicode |= (utf8[1] & 0x3F) << 6;
6 unicode |= (utf8[2] & 0x3F);
7 //unicode is ok!
......
详见http://hi.baidu.com/dustin_xiao/blog/item/2ab75b24c27ca32ed507426f.html
{
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
unsigned short * wszAnsi = new unsigned short[len+1];
memset(wszAnsi, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszAnsi, len);
len = WideCharToMultiByte(CP_ACP, 0, wszAnsi, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte (CP_ACP, 0, wszAnsi, -1, strAnsi, len, NULL,NULL); delete[] wszAnsi;
}
pFile = pDataObject->GetFileData(CF_UNICODETEXT);