Sdílet prostřednictvím


Schránka: Pomocí schránky systému Windows

Toto téma popisuje, jak používat standardní Windows API schránky aplikace MFC.

Většina aplikací pro systém Windows podporuje vyjmutí nebo kopírování dat do schránky systému Windows a vkládání dat ze schránky.Formáty schránky data aplikací liší.Podporuje pouze omezený počet formáty schránky pro omezený počet tříd.Obvykle provede příkazy související schránky – Vyjmout, kopírovat a vložit – zobrazení v nabídce Úpravy.Knihovna tříd definuje ID příkazu pro tyto příkazy: ID_EDIT_CUT, ID_EDIT_COPY, a ID_EDIT_PASTE.Jejich výzvy řádek zpráv také definována.

Příkazy v rámci zprávy a vysvětluje, jak zpracovat mapováním příkaz nabídky na funkci zpracování příkazů nabídek v aplikaci.Jako aplikace nedefinuje obslužnou rutinu funkce příkazů schránky v nabídce Úpravy, zůstanou zakázané.Chcete-li napsat obslužné rutiny funkce pro příkazy Vyjmout a kopírovat provedení výběru v aplikaci.Chcete-li napsat funkci zpracování příkazu Vložit dotaz do schránky, zda obsahuje data ve formátu, který aplikace může přijmout.Například chcete-li příkaz Kopírovat můžete vytvořit obslužnou rutinu přibližně takto:

void CMyListView::OnEditCopy()
{
   if ( !OpenClipboard() )
   {
      AfxMessageBox( _T("Cannot open the Clipboard") );
      return;
   }
   // Remove the current Clipboard contents
   if( !EmptyClipboard() )
   {
      AfxMessageBox( _T("Cannot empty the Clipboard") );
      return;
   }
   // Get the currently selected data
   HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
   strcpy_s((char*)hGlob, 64, "Current selection\r\n");
   // For the appropriate data formats...
   if ( ::SetClipboardData( CF_TEXT, hGlob ) == NULL )
   {
      CString msg;
      msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
      AfxMessageBox( msg );
      CloseClipboard();
      GlobalFree(hGlob);
      return;
   }
   CloseClipboard();
}

Jsou příkazy Vyjmout, kopírovat a vložit pouze v určitých kontextech smysluplný.Příkazy Vyjmout a kopírovat by být povolena pouze v případě, že něco vybrány a příkaz Vložit pouze v případě něco do schránky.Toto chování můžete zadat definováním funkce zpracování aktualizace povolit nebo zakázat tyto příkazy v závislosti na kontextu.Další informace naleznete v jak aktualizovat objekty uživatelského rozhraní.

Knihovny Microsoft Foundation Class podporují schránky s úpravy textu CEdit a CEditView tříd.Třídy OLE rovněž zjednodušit prováděcí schránky zahrnující položky OLE.Další informace o třídách OLE, viz schránky: pomocí mechanismu schránky OLE.

Ostatní prováděcí úpravy nabídky příkazy, například zpět (ID_EDIT_UNDO) a znovu (ID_EDIT_REDO), zůstane vám.Pokud aplikace nepodporuje tyto příkazy, můžete je snadno odstranit ze souboru prostředků pomocí prostředku editorů jazyka Visual C++.

Co chcete vědět více?

Viz také

Koncepty

Schránka