| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "StdAfx.h"
- #include ".\pasteanyastext.h"
- #include "SelectPasteFormat.h"
- PasteAnyAsText::PasteAnyAsText(void)
- {
- }
- PasteAnyAsText::~PasteAnyAsText(void)
- {
- }
- bool PasteAnyAsText::SelectClipToPasteAsText(const CDittoInfo &DittoInfo, IClip *pClip)
- {
- bool ret = false;
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- IClipFormats *pFormats = pClip->Clips();
- CWnd* pWnd = CWnd::FromHandle(DittoInfo.m_hWndDitto);
- CSelectPasteFormat dlg(pWnd, pFormats);
- if(dlg.DoModal() == IDOK)
- {
- //Find the format that was selected, remove all then readd the data as type CF_TEXT
- CLIPFORMAT format = dlg.SelectedFormat();
- if(format > 0)
- {
- IClipFormat *pText = pFormats->FindFormatEx(format);
- if(pText != NULL)
- {
- //We own the data, when we call DeleteAll tell it to not free the data
- pText->AutoDeleteData(false);
- HGLOBAL data = pText->Data();
- if(dlg.PasteAsUnicode() == false)
- {
- char * stringData = (char *)GlobalLock(data);
- int size = (int)GlobalSize(data);
- for(int i = 0; i < size; i++)
- {
- if(stringData[i] == 0)
- {
- stringData[i] = ' ';
- }
- }
- GlobalUnlock(data);
- //Remove all over formats and add the selected date back as CF_TEXT
- pFormats->DeleteAll();
- pFormats->AddNew(CF_TEXT, data);
- IClipFormat *pText = pFormats->FindFormatEx(CF_TEXT);
- if(pText != NULL)
- {
- pText->AutoDeleteData(true);
- }
- }
- else
- {
- wchar_t * stringData = (wchar_t *)GlobalLock(data);
- int size = (int)GlobalSize(data);
- for(int i = 0; i < (int)(size/(sizeof(wchar_t))); i++)
- {
- if(stringData[i] == 0)
- {
- stringData[i] = ' ';
- }
- }
- GlobalUnlock(data);
- //Remove all over formats and add the selected date back as CF_TEXT
- pFormats->DeleteAll();
- pFormats->AddNew(CF_UNICODETEXT, data);
- IClipFormat *pText = pFormats->FindFormatEx(CF_UNICODETEXT);
- if(pText != NULL)
- {
- pText->AutoDeleteData(true);
- }
- }
- ret = true;
- }
- }
- }
- return ret;
- }
|