예제 #1
0
파일: utils.cpp 프로젝트: GEO-IASS/nsis
void CopyToClipboard(HWND hwnd) {
  if (!hwnd || !OpenClipboard(hwnd)) return;
  LRESULT len = SendDlgItemMessage(hwnd, IDC_LOGWIN, WM_GETTEXTLENGTH, 0, 0);
  HGLOBAL mem = GlobalAlloc(GMEM_MOVEABLE, (++len)*sizeof(TCHAR));
  if (!mem) { CloseClipboard(); return; }
  TCHAR *txt = (TCHAR *)GlobalLock(mem);
  if (!txt) { CloseClipboard(); return; }
  EmptyClipboard();
  txt[0] = 0;
  SendDlgItemMessage(hwnd, IDC_LOGWIN, WM_GETTEXT, (WPARAM)(len), (LPARAM)txt);
  GlobalUnlock(mem);
#ifdef _UNICODE
  SetClipboardData(CF_UNICODETEXT, mem);
#else
  SetClipboardData(CF_TEXT, mem);
#endif
  CloseClipboard();
}
예제 #2
0
파일: wclipboard.cpp 프로젝트: 2asoft/0ad
Status sys_clipboard_set(const wchar_t* text)
{
	if(!OpenClipboard(hWndNewOwner))
		WARN_RETURN(ERR::FAIL);

	WARN_IF_FALSE(EmptyClipboard());

	// NB: to enable copy/pasting something other than text, add
	// message handlers for WM_RENDERFORMAT and WM_RENDERALLFORMATS.
	HGLOBAL hMem;
	Status ret = SetClipboardText(text, hMem);

	WARN_IF_FALSE(CloseClipboard());	// must happen before GlobalFree

	ENSURE(GlobalFree(hMem) == 0);	// (0 indicates success)

	return ret;
}
예제 #3
0
//////////////////////////////////////////////////////////////////////////////////////////////////
// clipboard
//////////////////////////////////////////////////////////////////////////////////////////////////
void cGUIEdit::ClipboardCopy()
{
	int s1 = sel1(), s2 = sel2();
	int size = s2-s1;
	if(size==0) return; // no selection

	if(!OpenClipboard(NULL)) return;
	if(EmptyClipboard())
	{
		HGLOBAL handler = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE,size+1); assert(handler!=NULL);
		void* data = GlobalLock(handler); assert(data!=NULL);
		memcpy(data,txt.c_str() + s1,size);
		((LPWSTR)data)[size]=0;
		GlobalUnlock(handler);
		SetClipboardData(CF_UNICODETEXT,handler);
	}
	CloseClipboard();
}
예제 #4
0
BOOL CClipboard::SetTextW(HWND owner, const wchar_t* str, int len)
{
	if (str && *str && OpenClipboard(owner))
	{
		EmptyClipboard();
		HANDLE hmem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, len + 4);
		if (hmem)
		{
			wchar_t* buf = (wchar_t*)GlobalLock(hmem);
			memcpy(buf, str, len + 4);
			GlobalUnlock(hmem);
			SetClipboardData(CF_UNICODETEXT, hmem);
		}
		CloseClipboard();
		return TRUE;
	}
	return FALSE;
}
예제 #5
0
파일: main.cpp 프로젝트: cdaze/akt
void CopyToClipboard(const char* text) ///Copies a string to the clipboard.
{
    HGLOBAL hText;
    char *pText;

    hText = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, strlen(text)+1);
    pText = (char*)GlobalLock(hText);
    strcpy(pText, text);

    OpenClipboard(0);
    EmptyClipboard();
    if(!SetClipboardData(CF_OEMTEXT, hText))
    {
        MessageBeep(MB_ICONERROR);
    }
    MessageBeep(MB_ICONINFORMATION);
    CloseClipboard();
}
예제 #6
0
LRESULT CMainDlg::OnCopyClip(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	OpenClipboard();
	EmptyClipboard();

	FrqValue atk = GetSetting(gen1AtkEd);
	AmpValue pk  = GetSetting(gen1VolEd);
	FrqValue dec = GetSetting(gen1DecEd);
	AmpValue sus = GetSetting(gen1SusEd);
	FrqValue rel = GetSetting(gen1RelEd);

	FrqValue mul1 = GetSetting(gen2MulEd);
	AmpValue amp1 = GetSetting(gen2NdxEd);
	FrqValue atk1 = GetSetting(gen2AtkEd);
	AmpValue pk1  = GetSetting(gen2PckEd);
	FrqValue dec1 = GetSetting(gen2DecEd);
	AmpValue sus1 = GetSetting(gen2SusEd);
	FrqValue rel1 = GetSetting(gen2RelEd);
	AmpValue end1 = GetSetting(gen2EndEd);

	FrqValue mul2 = GetSetting(gen3MulEd);
	AmpValue amp2 = GetSetting(gen3NdxEd);
	FrqValue atk2 = GetSetting(gen3AtkEd);
	AmpValue pk2  = GetSetting(gen3PckEd);
	FrqValue dec2 = GetSetting(gen3DecEd);
	AmpValue sus2 = GetSetting(gen3SusEd);
	FrqValue rel2 = GetSetting(gen3RelEd);
	AmpValue end2 = GetSetting(gen3EndEd);

	char txt[1024];
	sprintf(txt, "{ %4d, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f,\r\n%6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f,\r\n%6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f, %6.3f },\r\n",
		algorithm, 0.0, atk, pk, dec, sus, rel, 0.0,
		mul1, amp1, atk1, pk1, dec1, sus1, rel1, end1,
		mul2, amp2, atk2, pk2, dec2, sus2, rel2, end2);

	HANDLE mem = GlobalAlloc(0, strlen(txt)+1);
	char *ptxt = (char*)GlobalLock(mem);
	strcpy(ptxt, txt);
	GlobalUnlock(mem);

	SetClipboardData(CF_TEXT, mem);
	CloseClipboard();
	return 0;
}
예제 #7
0
파일: Common.cpp 프로젝트: boogunote/bn1
void CutOrCopyFiles(LPCTSTR lpBuffer,UINT uBufLen,BOOL bCopy)
{
	UINT uDropEffect;
	DROPFILES dropFiles;
	UINT uGblLen,uDropFilesLen;
	HGLOBAL hGblFiles,hGblEffect;
	char *szData,*szFileList;

	DWORD *dwDropEffect;

	uDropEffect=RegisterClipboardFormat(L"Preferred DropEffect");
	hGblEffect=GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE,sizeof(DWORD));
	dwDropEffect=(DWORD*)GlobalLock(hGblEffect);
	if(bCopy)
		*dwDropEffect=DROPEFFECT_COPY;
	else 
		*dwDropEffect=DROPEFFECT_MOVE;
	GlobalUnlock(hGblEffect);

	uDropFilesLen=sizeof(DROPFILES);
	dropFiles.pFiles =uDropFilesLen;
	dropFiles.pt.x=0;
	dropFiles.pt.y=0;
	dropFiles.fNC =FALSE;
	dropFiles.fWide =TRUE;

	uGblLen=uDropFilesLen+uBufLen*2+20;
	hGblFiles= GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, uGblLen);
	szData=(char*)GlobalLock(hGblFiles);
	memset(szData, 0, uGblLen);
	memcpy(szData,(LPVOID)(&dropFiles),uDropFilesLen);
	szFileList=szData+uDropFilesLen;
	memcpy(szFileList, lpBuffer, uBufLen*sizeof(TCHAR));

	GlobalUnlock(hGblFiles);

	if( OpenClipboard(NULL) )
	{
		EmptyClipboard();
		SetClipboardData( CF_HDROP, hGblFiles );
		SetClipboardData(uDropEffect,hGblEffect);
		CloseClipboard();
	}
}   
void CCommunicationTrafficDlg::OnBnClickedCopy()
{
//--------------------------------------------------------------------------------------------------------------------

   
    CArray <int, int> aryListSel;
    int nCount= m_DataList.GetSelCount();
    aryListSel.SetSize(nCount);
    m_DataList.GetSelItems(nCount, aryListSel.GetData()); 

  //  aryListSel中存的就是选中列的index值,如果需要取内容,加以下语句:
        CString str,content;
        for (int i= nCount-1; i>= 0; i--)
        {
            m_DataList.GetText(aryListSel.GetAt(i), (CString&)str);
            str+=_T("\n");
            content==str;
        }


//--------------------------------------------------------------------------------------------------------------------
     
    HGLOBAL hClip; 
    //定义一个HGLOBAL句柄变量用来指向分配的内存块
    if (OpenClipboard())
    {
        EmptyClipboard();                            //将剪贴板内容清空
        hClip=GlobalAlloc(GMEM_MOVEABLE,content.GetLength()+1); 
        //在堆上分配可移动的内存块,程序返回一个内存句柄
        char * buff;                                 //定义指向字符型的指针变量
        buff=(char*)GlobalLock(hClip);
        //对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1
        strcpy(buff,(char*)content.GetBuffer());
        //将用户输入的数据复制到指针变量中,实际上就是复制到分配的内存块中
        GlobalUnlock(hClip);
        //数据写入完毕,进行解锁操作,并将引用计数器数字减1
        SetClipboardData(CF_TEXT,hClip);
        //将存放有数据的内存块放入剪贴板的资源管理中
        CloseClipboard();
        //关闭剪贴板,释放剪贴板资源的占用权
      
    }
//--------------------------------------------------------------------------------------------------------------------
}
void _glfwPlatformSetClipboardString(_GLFWwindow* window, const char* string)
{
    WCHAR* wideString;
    HANDLE stringHandle;
    size_t wideSize;

    wideString = _glfwCreateWideStringFromUTF8(string);
    if (!wideString)
    {
        _glfwInputError(GLFW_PLATFORM_ERROR,
                        "Win32: Failed to convert string to UTF-16");
        return;
    }

    wideSize = (wcslen(wideString) + 1) * sizeof(WCHAR);

    stringHandle = GlobalAlloc(GMEM_MOVEABLE, wideSize);
    if (!stringHandle)
    {
        free(wideString);

        _glfwInputError(GLFW_PLATFORM_ERROR,
                        "Win32: Failed to allocate global handle for clipboard");
        return;
    }

    memcpy(GlobalLock(stringHandle), wideString, wideSize);
    GlobalUnlock(stringHandle);

    if (!OpenClipboard(window->win32.handle))
    {
        GlobalFree(stringHandle);
        free(wideString);

        _glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to open clipboard");
        return;
    }

    EmptyClipboard();
    SetClipboardData(CF_UNICODETEXT, stringHandle);
    CloseClipboard();

    free(wideString);
}
예제 #10
0
파일: misc.c 프로젝트: RareHare/reactos
VOID
CopyTextToClipboard(LPCWSTR lpszText)
{
    if(OpenClipboard(NULL))
    {
        HGLOBAL ClipBuffer;
        WCHAR *Buffer;

        EmptyClipboard();
        ClipBuffer = GlobalAlloc(GMEM_DDESHARE, (wcslen(lpszText) + 1) * sizeof(TCHAR));
        Buffer = (WCHAR*)GlobalLock(ClipBuffer);
        wcscpy(Buffer, lpszText);
        GlobalUnlock(ClipBuffer);

        SetClipboardData(CF_UNICODETEXT, ClipBuffer);

        CloseClipboard();
    }
}
예제 #11
0
int CBitmap::SetClipboard() {
	HANDLE hGMem = GlobalAlloc(GHND, m_bmpInfoHeader.biSize + m_image.buf.size());
	BITMAPINFOHEADER *pBih = (BITMAPINFOHEADER *)GlobalLock(hGMem);
	*pBih = *(BITMAPINFOHEADER *)&m_bmpInfoHeader;
	//pBih->biBitCount = 32;
	//pBih->biCompression = BI_RGB;
	
	int width	= m_image.width;
	int height	= m_image.height;
	int bytesPerPixel = m_bmpInfoHeader.biBitCount / 8;
	int bytesPerLine = ( (width + (m_bmpInfoHeader.biBitCount % 32 != 0) ) * bytesPerPixel >> 2) << 2;
//	int writeSize = bytesPerLine * height;
	
	printf("Setting... w=%d, h=%d", width, height);
	int offset = pBih->biSize + pBih->biClrUsed * (pBih->biBitCount > 24 ? sizeof(RGBQuad) : sizeof(RGBTriple));
	u8 *imgData = (u8 *)pBih + offset;
	u32 *pBuf = (u32 *)&m_image.buf[0];
	
	switch(m_bmpInfoHeader.biBitCount) {
		case 24: {
			if(m_bmpInfoHeader.biHeight < 0) // Top to bottom
				REP(y, height)	REP(x, width) *(RGBTriple *)&imgData[bytesPerLine*y + 3*x] = *(RGBTriple *)&pBuf[width*y+x];
			else // Bottom to top
				REV(y, height)	REP(x, width) *(RGBTriple *)&imgData[bytesPerLine*y + 3*x] = *(RGBTriple *)&pBuf[width*y+x];
		} break;
		
		case 32: {
			if(m_bmpInfoHeader.biHeight < 0) // Top to bottom
				REP(y, height)	REP(x, width) *(u32 *)&imgData[(width*y+x)*4] = pBuf[width*y+x];
			else // Bottom to top
				REV(y, height)	REP(x, width) *(u32 *)&imgData[(width*y+x)*4] = pBuf[width*y+x];
		} break;
	}
	GlobalUnlock(hGMem);
	
	if( !OpenClipboard(NULL) ) return -1;
	EmptyClipboard();
	SetClipboardData(CF_DIB, hGMem);
	CloseClipboard();
	
	puts("OK");
	return 0;
}
예제 #12
0
void CGumpListView::OnPopupCopygumpid()
{
	int iGumpID = GetSelectedGumpID();
	CString strText = GfxXtoA(iGumpID);
	
	if  (!OpenClipboard()) return;
	
	EmptyClipboard();
	HGLOBAL hClipboardData;
	hClipboardData = GlobalAlloc(GMEM_DDESHARE, strText.GetLength()+1);

	char * pchData = (char*)GlobalLock(hClipboardData);
	strcpy(pchData, strText);
	GlobalUnlock(hClipboardData);
	SetClipboardData(CF_TEXT,hClipboardData);

	CloseClipboard();

}
예제 #13
0
void Clipboard::set(std::string text)
{
   if ( !OpenClipboard(NULL) )
   {
      //AfxMessageBox( _T("Cannot open the Clipboard") );
      std::cout << "Clipboard.set(): Cannot open the Clipboard" << std::endl;
      return;
   }
   // Remove the current Clipboard contents 
   if( !EmptyClipboard() )
   {
      std::cout << "Clipboard.set(): Cannot empty the Clipboard" << std::endl;
      return;
   }
   // Get the currently selected data
   //std::cout << "this is causing a crash somewhere: sizeof(text):" << sizeof(text) << " text.length():" << text.length();
   HGLOBAL hGlob = GlobalAlloc(GMEM_MOVEABLE, text.size()+1);
   //strcpy_s((char*)hGlob, 64, text.c_str());
   if (!hGlob)
   {
      std::cout << "Clipboard.set(): could not allocate hGlob" << std::endl;
      CloseClipboard();
      return;
   }

   memcpy(GlobalLock(hGlob),text.c_str(),text.size()+1);
   GlobalUnlock(hGlob);

   // For the appropriate data formats... 
   if ( ::SetClipboardData( CF_TEXT, hGlob ) == NULL )
   {
      std::cout << "Clipboard.set(): Unable to set Clipboard data, error: " << GetLastError() << std::endl;
      //CString msg;
      //msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
      //AfxMessageBox( msg );
      CloseClipboard();
      GlobalFree(hGlob);
      return;
   }
   CloseClipboard();

   get_instance()->__text = text;
}
예제 #14
0
  void Copy( const char * data, int len )
  {
    HWND hWnd = GetForegroundWindow();
    if (!::OpenClipboard( hWnd ))
      return;

    EmptyClipboard();

    HGLOBAL h = GlobalAlloc(GMEM_MOVEABLE,(len + 1) * sizeof(WCHAR));
    WCHAR * pMem = (WCHAR*)GlobalLock(h);

    ZeroMemory( pMem, (len + 1) * sizeof(WCHAR) );
    CopyMemory( pMem, data, (len + 1) * sizeof(WCHAR) );

    GlobalUnlock(h);
    SetClipboardData(CF_TEXT,h);

    CloseClipboard();
  }
예제 #15
0
static bool win_set_clipboard_text(ALLEGRO_DISPLAY *display, const char *text)
{
   HWND handle = get_window_handle(display);
   HANDLE hMem = NULL;
   wchar_t *tstr = NULL;
   size_t size;
   size_t len;
   LPTSTR dst;

   if (!OpenClipboard(handle)) {
      ALLEGRO_DEBUG("Could not open clipboard for handle %p", handle);
      return false;
   }

   /* Convert the text from UTF-8 to Windows Unicode */
   tstr = _al_win_utf16(text);
   len  = wcslen(tstr);
   size = (len+1) * sizeof(wchar_t);
   /* Save the data to the clipboard */
   hMem = GlobalAlloc(GMEM_MOVEABLE, size);

   if (!hMem) {
      al_free(tstr);
      ALLEGRO_DEBUG("GlobalAlloc failed to allocate memory for the clipboard data");
      return false;
   }

   dst = (LPTSTR)GlobalLock(hMem);
   /* Copy the text over. Unlike SDL, do NOT convert newlines, that's for the
    * use to decide. */
   memmove(dst, tstr, size);
   dst[len] = 0;
   GlobalUnlock(hMem);
   EmptyClipboard();
   if (!SetClipboardData(TEXT_FORMAT, hMem)) {
      al_free(tstr);
      ALLEGRO_DEBUG("Couldn't set clipboard data");
      return false;
   }
   al_free(tstr);
   CloseClipboard();
   return true;
}
예제 #16
0
	BOOL CopyTextToClipboard(HWND hwnd, const std::wstring &wtext) {
		OpenClipboard(hwnd);
		EmptyClipboard();
		HANDLE hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (wtext.size() + 1) * sizeof(wchar_t));
		if (hglbCopy == NULL) {
			CloseClipboard();
			return FALSE;
		}

		// Lock the handle and copy the text to the buffer.

		wchar_t *lptstrCopy = (wchar_t *)GlobalLock(hglbCopy);
		wcscpy(lptstrCopy, wtext.c_str());
		lptstrCopy[wtext.size()] = (wchar_t) 0;    // null character
		GlobalUnlock(hglbCopy);
		SetClipboardData(CF_UNICODETEXT, hglbCopy);
		CloseClipboard();
		return TRUE;
	}
예제 #17
0
void SetClipboard(const tstring& sBuf)
{
	if (!OpenClipboard(NULL))
		return;

	EmptyClipboard();

	HGLOBAL hClipboard;
	hClipboard = GlobalAlloc(GMEM_MOVEABLE, sBuf.length()+1);

	char* pszBuffer = (char*)GlobalLock(hClipboard);
	strcpy(pszBuffer, LPCSTR(sBuf.c_str()));

	GlobalUnlock(hClipboard);

	SetClipboardData(CF_TEXT, hClipboard);

	CloseClipboard();
}
예제 #18
0
HRESULT cdecl LogFlush(HWND hwnd)
{
    int i;
    HGLOBAL hGlobalMemory=NULL;
    TCHAR  *lpGlobalMemory=NULL;

    OpenClipboard(hwnd);
    EmptyClipboard();

    hGlobalMemory=GlobalAlloc(GHND, (DWORD) (gLoggerPointer + 1)*sizeof(TCHAR));
    lpGlobalMemory=(TCHAR *)GlobalLock(hGlobalMemory);

    for(i=0;i<gLoggerPointer;i++)
        *lpGlobalMemory++=gLoggerArray[i];

    SetClipboardData(CF_TEXT,hGlobalMemory);
    CloseClipboard();
    return(NOERROR);
}
예제 #19
0
파일: clipboard.cpp 프로젝트: dacci/shinobu
bool Clipboard::Set(const Clipboard* clipboard, HWND fallback_owner) {
  auto fallback = false;
  if (!OpenClipboard(clipboard->owner())) {
    if (!OpenClipboard(fallback_owner))
      return false;

    fallback = true;
  }

  if (!EmptyClipboard()) {
    CloseClipboard();
    return false;
  }

  for (auto& pair : *clipboard) {
    const auto& format_id = pair.first;
    if (fallback && format_id == CF_OWNERDISPLAY)
      continue;

    auto& format = pair.second;

    auto handle = GlobalAlloc(GMEM_MOVEABLE, format->size());
    if (handle == NULL)
      continue;

    auto failed = true;
    auto memory = GlobalLock(handle);
    if (memory != nullptr) {
      memcpy(memory, format->Get(), format->size());
      GlobalUnlock(memory);

      if (SetClipboardData(format_id, handle) != NULL)
        failed = false;
    }

    if (failed)
      GlobalFree(handle);
  }

  CloseClipboard();

  return true;
}
예제 #20
0
파일: winapi.l.c 프로젝트: ignacio/winapi
/// copy text onto the clipboard.
// @param text the text
// @function set_clipboard
def set_clipboard(Str text) {
  HGLOBAL glob;
  LPWSTR p;
  int bufsize = 3*strlen(text);
  if (! OpenClipboard(NULL)) {
    return push_error(L);
  }
  EmptyClipboard();
  glob = GlobalAlloc(GMEM_MOVEABLE, bufsize);
  p = (LPWSTR)GlobalLock(glob);
  wstring_buff(text,p,bufsize);
  GlobalUnlock(glob);
  if (SetClipboardData(CF_UNICODETEXT,glob) == NULL) {
    CloseClipboard();
    return push_error(L);
  }
  CloseClipboard();
  return 0;
}
예제 #21
0
파일: sdlscrap.c 프로젝트: LarBob/executor
PUBLIC void
put_scrap(int type, int srclen, char *src)
{
  scrap_type format;
  int dstlen;
  char *dst;

  format = convert_format(type);
  dstlen = convert_data(type, NULL, src, srclen);

#if defined(X11_SCRAP)
/* * */
  dst = (char *)alloca(dstlen);
  if ( dst != NULL )
    {
      convert_data(type, dst, src, srclen);
      XChangeProperty(SDL_Display, DefaultRootWindow(SDL_Display),
		      XA_CUT_BUFFER0, format, 8, PropModeReplace,
		      (unsigned char *) dst, dstlen);
      if ( we_lost_clipboard() )
        XSetSelectionOwner(SDL_Display, XA_PRIMARY, SDL_Window, CurrentTime);
    }

#elif defined(WIN_SCRAP)
/* * */
  if ( OpenClipboard(SDL_Window) )
    {
      HANDLE hMem;

      hMem = GlobalAlloc((GMEM_MOVEABLE|GMEM_DDESHARE), dstlen);
      if ( hMem != NULL )
        {
          dst = (char *)GlobalLock(hMem);
          convert_data(type, dst, src, srclen);
          GlobalUnlock(hMem);
          EmptyClipboard();
          SetClipboardData(format, hMem);
        }
      CloseClipboard();
    }

#endif /* scrap type */
}
예제 #22
0
파일: LogGraph.cpp 프로젝트: tlogger/TMon
void CLogGraph::CopyToClipboard()
{
	if (!m_bDragSel)return;

	if ( !OpenClipboard() )
	{
		AfxMessageBox( "Cannot open the Clipboard" );
		return;
	} 
	if( !EmptyClipboard() )
	{
		AfxMessageBox( "Cannot empty the Clipboard" );
		return;
	}
	int size = m_pDataEt - m_pDataSt;
	tdata* p = m_pDataSt;
	CString strsum = "";
	CString str;
	for (int i = 0; i<size; i++)
	{
		str.Format("%s, %d\r\n", tformat("%Y-%m-%d %H:%M:%S", p->time), p->temp/100);
		strsum += str;
		p++;
	}

	HGLOBAL hGlobal = GlobalAlloc( GHND | GMEM_SHARE, (strsum.GetLength() + 1) *sizeof(TCHAR) );
	PSTR pGlobal = (PSTR)GlobalLock( hGlobal );
	lstrcpy( pGlobal, TEXT( strsum ) );
	GlobalUnlock( hGlobal ); 



	if ( ::SetClipboardData( CF_TEXT, hGlobal  ) == NULL )
	{
		AfxMessageBox( "Unable to set Clipboard data" );
		CloseClipboard();
		return;
	}

	CloseClipboard(); 


}
예제 #23
0
파일: CABrView.cpp 프로젝트: koron/ABrowser
// CopyToClipBoard ////////////////////////////////////////////////////////1.00
//		選択されている範囲があれば、
//		それをコピーしてクリップボードに渡す。
	int
ClassABrowserView::CopyToClipboard()
{
	if (!dwQuerySize)
		return 0;

	// メモリを確保してクリップボード用のデータを作成
	HGLOBAL hMem	= GlobalAlloc(GMEM_MOVEABLE, dwQuerySize);
	char* pstr		= (char*)GlobalLock(hMem);
	QueryGenerate(pstr);
	GlobalUnlock(hMem);

	OpenClipboard(hWnd);
	EmptyClipboard();
	SetClipboardData(CF_TEXT, hMem);
	CloseClipboard();

	return 0;
}
예제 #24
0
INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) {
	size_t i;
	switch (uMsg) {
	case WM_INITDIALOG:
		SendMessage(hwndDlg, WM_SETICON, 0, 0);
		for (i = 0; i < sizeof(primary)/sizeof(line); i++)
			SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_ADDSTRING, 0, (LPARAM)primary[i].name);
		for (i = 0; i < sizeof(sub)/sizeof(line); i++)
			SendDlgItemMessage(hwndDlg, IDC_SUB, CB_ADDSTRING, 0, (LPARAM)sub[i].name);
		break;
	case WM_COMMAND:
		if (LOWORD(wParam) == IDCANCEL) {
			EndDialog(hwndDlg, 0);
			PostQuitMessage(0);
		}
		else if (HIWORD(wParam) == CBN_SELCHANGE) {
			if (SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0) != CB_ERR && SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0) != CB_ERR) {
				TCHAR lang[512];
				wsprintf(lang, _T("Language ID: %d"), MAKELANGID(primary[SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0)].id, sub[SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0)].id));
				SetDlgItemText(hwndDlg, IDC_RESULT, lang);
			}
		}
		else if (LOWORD(wParam) == IDOK) {
			if (SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0) != CB_ERR && SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0) != CB_ERR) {
				HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, 16*sizeof(TCHAR));
				if (!hMem) return 0;
				TCHAR *lang_id = (TCHAR *)GlobalLock(hMem);
				wsprintf(lang_id, _T("%u"), MAKELANGID(primary[SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0)].id, sub[SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0)].id));
				GlobalUnlock(hMem);
				if (!OpenClipboard(hwndDlg)) return 0;
				EmptyClipboard();
#ifdef _UNICODE
				SetClipboardData(CF_UNICODETEXT,hMem);
#else
				SetClipboardData(CF_TEXT,hMem);
#endif
				CloseClipboard();
			}
		}
		break;
	}
	return 0;
}
예제 #25
0
void IntegerToRoman::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	CString source;
	GetDlgItem(IDC_EDIT2)->GetWindowTextA(source);
	//文本内容保存在source变量中
	if(OpenClipboard())
	{
		HGLOBAL clipbuffer;
		char * buffer;
		EmptyClipboard();
		clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
		buffer = (char*)GlobalLock(clipbuffer);
		strcpy(buffer, LPCSTR(source));
		GlobalUnlock(clipbuffer);
		SetClipboardData(CF_TEXT,clipbuffer);
		CloseClipboard();
	}
}
예제 #26
0
void CLeashDebugWindow::OnCopyToClipboard()
{
    if (!OpenClipboard())
	{
        MessageBox("Unable to open Clipboard!", "Error", MB_OK);
		return;
	}

	EmptyClipboard();

    int maxItems = m_debugListBox.GetCount();
	const int MAX_MEM = maxItems * 90; // 90 chars per line seems safe like a safe bet

	HGLOBAL hDebugText = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, MAX_MEM);
    if (NULL != hDebugText)
    {
		CString listboxItem;
		LPSTR pDebugText = (LPSTR) GlobalLock(hDebugText);
		if (!pDebugText)
		{
		    MessageBox("Unable to write to Clipboard!", "Error", MB_OK);
			ASSERT(pDebugText);
			return;
		}

		*pDebugText = 0;
		for (int xItem = 0; xItem < maxItems; xItem++)
		{
			m_debugListBox.GetText(xItem, listboxItem);
			strcat(pDebugText, listboxItem);
			strcat(pDebugText, "\r\n");
		}

		GlobalUnlock(hDebugText);
    }

    if (NULL != hDebugText)
        SetClipboardData(CF_TEXT, hDebugText);

	CloseClipboard();
	MessageBox("Copy to Clipboard was Successful!\r\n Paste it in your favorite editor.",
                "Note", MB_OK);
}
예제 #27
0
BOOL WINAPI EditCopy( HWND hDlg ) 
{ 
    LPTSTR  lptstrCopy; 
    HGLOBAL hglbCopy; 

    // Open the clipboard, and empty it. 
 
    if (!OpenClipboard(hDlg)) 
        return FALSE; 
    EmptyClipboard(); 
 
    if (hDlg) 
    { 
		long count, item;

		count = ListView_GetSelectedCount( GetDlgItem(hDlg, IDC_FILEVIEW) );

		if ( count ){
			char string[LINELEN];
			HWND hlist = GetDlgItem(hDlg, IDC_FILEVIEW);

	        hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (count*LINELEN) * sizeof(TCHAR));
	        lptstrCopy = (LPTSTR)GlobalLock(hglbCopy);
			if ( lptstrCopy ){
				lptstrCopy[0] = 0;
				item = ListView_GetNextItem( hlist, -1 , LVNI_SELECTED );
				while( item != -1 ){
					ListView_GetItemText( hlist, item, 0, string, LINELEN );
					strcat( lptstrCopy, string );
					strcat( lptstrCopy, "\r\n" );
					item = ListView_GetNextItem( hlist, item , LVNI_SELECTED );
				}
			}
	        GlobalUnlock(hglbCopy); 
	        SetClipboardData(CF_TEXT, hglbCopy); 
		}
    } 
    // Close the clipboard. 
 
    CloseClipboard();
 
    return TRUE; 
} 
예제 #28
0
파일: Utils.cpp 프로젝트: Peluko/xkeymacs
BOOL CUtils::SetClipboardText(const CString& text)
{
	if (!OpenClipboard())
		return FALSE;
	const int nLength = text.GetLength() + 1;
	const HGLOBAL hClipboard = GlobalAlloc(GHND, nLength);
	if (!hClipboard)
		return FALSE;
	const LPVOID pMem = GlobalLock(hClipboard);
	memcpy(pMem, LPCTSTR(text), nLength);
	GlobalUnlock(hClipboard);
	EmptyClipboard();
	if (SetClipboardData(CF_TEXT, hClipboard) == NULL) {
		CloseClipboard();
		return FALSE;
	}
	CloseClipboard();
	return TRUE;
}
예제 #29
0
파일: main.cpp 프로젝트: jnorthrup/gpac
void do_copy_paste()
{
	if (!OpenClipboard(g_hwnd)) return;

	/*or we are editing text and clipboard is not empty*/
	if (IsClipboardFormatAvailable(CF_TEXT) && (gf_term_paste_text(term, NULL, 1)==GF_OK)) {
		HGLOBAL hglbCopy = GetClipboardData(CF_TEXT);
		if (hglbCopy) {
#ifdef _WIN32_WCE
			char szString[1024];
			LPCTSTR paste_string = (LPCTSTR) GlobalLock(hglbCopy);
			CE_WideToChar((u16 *) paste_string, szString);
			gf_term_paste_text(term, szString, 0);
#else
			char *szString = (char *)GlobalLock(hglbCopy);
			gf_term_paste_text(term, szString, 0);
#endif
			GlobalUnlock(hglbCopy);
		}
	}
	/*we have something to copy*/
	else if (gf_term_get_text_selection(term, 1)!=NULL) {
		u32 len;
		const char *text = gf_term_get_text_selection(term, 0);
		if (text && strlen(text)) {
			EmptyClipboard();
			len = strlen(text);

#ifdef _WIN32_WCE
			HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (len + 1) * sizeof(u16));
			LPCTSTR new_string = (LPCTSTR) GlobalLock(hglbCopy);
			CE_CharToWide((char*)text, (u16*)new_string);
#else
			HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (len + 1) * sizeof(u8));
			char *new_string = (char*) GlobalLock(hglbCopy);
			strcpy(new_string, text);
#endif
			GlobalUnlock(hglbCopy);
			SetClipboardData(CF_TEXT, hglbCopy);
		}
	}
	CloseClipboard();
}
예제 #30
0
파일: capture.c 프로젝트: style7en/code
void copy_rect_to_clipboard(HWND hwnd, RECT *rt)
{
    int width = rt->right - rt->left;
    int height = rt->bottom - rt->top;
    HDC hdc = GetDC(hwnd);
    HDC mem_dc = CreateCompatibleDC(hdc);
    HBITMAP bitmap = CreateCompatibleBitmap(hdc, width, height);
    
    SelectObject(mem_dc, bitmap);
    BitBlt(mem_dc, 0, 0, width, height, hdc, rt->left, rt->top, SRCCOPY);
    
    OpenClipboard(hwnd);
    EmptyClipboard();
    SetClipboardData(CF_BITMAP, bitmap);
    
    DeleteObject(bitmap);
    DeleteDC(mem_dc);
    ReleaseDC(hwnd, hdc);
}