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++.