我的程序中要求一个功能,当从其他窗口,比如ie中,将一段文字拖到本窗口时,要接收到字符串并显示出来。
现在功能已经基本实现,拖过来英文,中文,日文,俄文,法文都没问题,但是德文却总有些字符显示乱码。
我试了其他的一些软件,qq和vc6都显示不正确,但是ie,msn,vs.net,office等都可以正确显示。
我想是我接收到字符串后没有做正确的转换,但是不明白该如何转换,接收到的字符串是以什么格式存储的。
希望有过类似经验的能指点一下,不胜感激。我接收的代码大致如下:
BOOL CTmp3View::OnDrop(COleDataObject *pDataObject, DROPEFFECT dropEffect, CPoint point)
{
STGMEDIUM stgm;
FORMATETC fm = {CF_TEXT, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
char* cpData = NULL;
DWORD dwSize = 0; //得到数据和数据的字节数
pDataObject->GetData(CF_TEXT, &stgm, &fm);
cpData = (char*)GlobalLock(stgm.hGlobal);
dwSize = GlobalSize(stgm.hGlobal); //处理数据并显示
...    ---->> //我想这里应该对cpData有所处理 return CView::OnDrop(pDataObject, dropEffect, point);
}

解决方案 »

  1.   

    你可以获取CF_HTML的内容试试
    你的程序是不是支持Unicode?操作系统呢?
      

  2.   

    UNICODE我加和没加都试了,都是一样效果。
    我家里机子是win2000中文版,公司机子是win2000英文版,但是安装了中文语言。
    我先试试CF_HTML,谢谢关注。
      

  3.   

    问题已经解决了。
    我改成CF_HTML,但是编译说CF_HTML没有定义。
    我到CF_TEXT定义的地方一看,确实没有CF_HTML,但是却有CF_UNICODETEXT,呵呵,改成这个就搞定了。再次谢谢你的提示和关注。