sFiles为文件路径,其中有汉字也有英文、数字的
但是需要把它全部转化成双字节字符,
用下面的方法,只有路径中有一个汉字的才可以正常操作,为什么呢?USES_CONVERSION;
memcpy( sData + 20, A2W( sFiles ), nLen*2 ); 怎样改正呢?谢谢,请指教。
但是需要把它全部转化成双字节字符,
用下面的方法,只有路径中有一个汉字的才可以正常操作,为什么呢?USES_CONVERSION;
memcpy( sData + 20, A2W( sFiles ), nLen*2 ); 怎样改正呢?谢谢,请指教。
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,sFiles,-1,wszData,strlen(sFiles)+1);
那位大虾有A2W()的详尽的用法解释(NO MSDN),那就太感谢了
你看看用 A2W 转换过来的字符串是什么样子的?
还有是不是文件路径的问题,比如有的设计得不周全的软件在读文件时如果路径中包含空格的话,则会出现如上提示。
就是把单字节变成双字节?是把整个字符串都变吗?也就是说汉字就不变了吧?
if(g_Camera[no].Position[m] == '\0') break;
if(g_Camera[no].Position[m]>=0)
{
Format1[n] = g_Camera[no].Position[m];
n++; m++;
}
else
{
X = (g_Camera[no].Position[m]+256)<<8;
temp =(g_Camera[no].Position[m+1]+256)+X;
Format1[n] = temp;
n++; m++; m++;
}
因为到汉字,一个字节就看不出来是什么了但是好象确实是汉字就给变错了:(
debug下,value那一栏,前面有个值,应该是ASCII码吧?然后是个'\'一类的
如:92'\',意思就是'\'的ASCII码是92吧?如果是这样,那么汉字正确的都是负的,而经过A2W之后,就变为正的了所以,是不是汉字变成乱码了?谢谢大家帮助!
把汉字的地方自己输入进去,可是如果汉字是原来的ACSII码表示还会出错,如果变成由A2W变成的新的就对了。如果说还是需要变一下的话,那么为什么两个汉字以上就不对了呢?反正到现在我还没有一次是两个汉字以上的成功呢我想还是和汉字有关吧?为什么呢?请帮我解释一下吧
我的源代码如下:
void CWjjmView::OnEditCopy()
{
file_to_edit=GetFileSelected();
//文件完全路径的长度
int nLen=file_to_edit.GetLength();
char sFiles[MAX_PATH];
//sFiles中为要复制的文件的路径
strcpy(sFiles, (LPCTSTR)file_to_edit);
DROPFILES dobj = { 20, { 0, 0 }, false, true }; //分配一块空间用于存放文件路径
// total length of files name
int nGblLen = sizeof(dobj) + nLen*2+5;//lots of nulls and multibyte_char
HGLOBAL hGbl = GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, nGblLen);
char* sData = (char*)::GlobalLock(hGbl);
memcpy( sData, &dobj, 20 );
USES_CONVERSION;
memcpy( sData + 20, A2W( sFiles ), nLen*2 );
::GlobalUnlock(hGbl);
if( OpenClipboard() )
{
EmptyClipboard();
SetClipboardData( CF_HDROP, hGbl );
CloseClipboard();
}
}
完成在自己的程序中“复制”文件到剪帖板,在系统的资源管理中可以“粘贴”
哪位好心人再帮我看看吧,实在是不明白为什么了:(