unicode字符串比较:剪贴板文件操作,还有关于字符串,以及Unicode的代码



项目需要用到复制粘贴工作主要是文件代码不好找啊真不好找啊自己找找改改

void CClipDlg::OnOK
{
COleDataObject odj;
( odj.AttachClipboard )
{
( odj.IsDataAvailable( CF_HDROP ) )
{
STGMEDIUM StgMed;
FORMATETC fmte = { CF_HDROP,(DVTARGETDEVICE FAR *)NULL,DVASPECT_CONTENT,-1,TYMED_HGLOBAL };
( odj.GetData( CF_HDROP, &StgMed, &fmte ) )
{
HDROP hDrop = (HDROP)StgMed.hGlobal;
CopyFileNames( hDrop );
(StgMed.pUnkForRelease)
StgMed.pUnkForRelease->Release;

GlobalFree(StgMed.hGlobal);
;
}
}
}
}


void CClipDlg::CopyFileNames( HDROP hDrop )
{
UINT cFiles = ::DragQueryFile(hDrop, (UINT)-1, NULL, 0);
CString szText;
szText.Format( "There are %d files/directories\r\n", cFiles );

char szFile[MAX_PATH];

for( UINT count = 0; count < cFiles; count )
{
::DragQueryFile(hDrop, count, szFile, (szFile));
szText szFile;
szText "\r\n";
}
MessageBox(szText);
}
void CClipDlg::OnButton1
{

char sFiles = "C:\\Temp\\file1.txt\0C:\\Temp\\file2.txt"; //这些都是剪贴板内容格式看着那个0
//MessageBox(sFiles); 这里会从\0处截断看看下面会是真正长度话想想如何传递
DROPFILES dobj = { 20, { 0, 0 }, 0, 1 };//在SDK里面
nLen = (sFiles);//算是操作符串关系没有关系比如char s[10]={0};(s);
nGblLen = (dobj) + nLen*2 + 5;//这些都是SDK中定义
HGLOBAL hGbl = GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, nGblLen);
//修改内存地址
{
char* sData = (char*)::GlobalLock(hGbl);//返回内存地址
memcpy( sData, &dobj, 20 );
char* sWStr = sData+20;//这句是个不错指针操作
for( i = 0; i < nLen*2; i 2 )
sWStr[i] = sFiles[i/2];
}
GlobalUnlock(hGbl);

( OpenClipboard )
{
EmptyClipboard;
SetClipboardData( CF_HDROP, hGbl );
CloseClipboard;
}
}
明天要上课了不过过两天要开运动那个会会放假

明天给老总发短信

//char c="12345";//=6;strlen=5

//char *c = "123456";//=4(指针大小);strlen=6

//char c="123456789";c[5]=0;//=10;strlen=5;

char c[10]="12345";//=10;strlen=5;

0:54 2008-10-13发现不支持中文需要把中文转换成unicode使用话会在\0那里截断在网上又没有找到ansi->unicode转换规律我在十 6进制编辑器中发现ansi和unicode文件中ascii码有规律但是中文我没有找出来

仔细想想就先支持个文件复制本身我listView里就没有多选

明天再找找转换unicode有什么规律
Tags:  unicode编码 unicode unicode代码 unicode字符串比较

延伸阅读

最新评论

发表评论