Шаг 150 - OpenClipboard и CloseClipboard

Для работы с буфером обмена его необходимо отрыть:

BOOL OpenClipboard
(
	HWND hWndNewOwner	// указатель на окно
);

После использования закрыть:

BOOL CloseClipboard(VOID);

Обе эти функции возвращают нулевое значение в случае ошибки. Давайте попробуем на примере MFC приложения с диалоговым окном.

150_1.gif (2513 b)

И код напишем для кнопок:

void COpenClipboardDlg::OnOpenClipboard() 
{
	if (::OpenClipboard(this->m_hWnd)==0)
		AfxMessageBox("Error Open");
}

void COpenClipboardDlg::OnCloseCiplboard() 
{
	if (::CloseClipboard()==0)
		AfxMessageBox("Error Close");
}

Только одно приложение может открыть буфер обмена. В момент открытия буфера он блокируется. Давайте попробуем. Запускаем приложение и нажимаем кнопку Open. А теперь попробуем что-то сделать, например, в Word. Скажем скопировать и вставить текст. Мы получим сообщение об ошибке.

150_2.gif (3852 b)

Кстати Word немного странно себя ведет с буфером обмена в плане того, что если другое приложение его блокирует, то через обычное меню все операции с буфером запрещены, в через контекстное меню можно. Ведь такой табличке как Вы вообще быть не должно из-за недоступности пунктов меню. А они могут быть доступны.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 05.11.2001