Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Работа с буфером обмена Clipboard

Rusa


Clipboard



Clipboard Windows выполняет две основные функции. Во-первых, он служит буфером памяти для кратковременного хранения данных: чтобm 858n137i 9; в текстовом редакторе переместить фрагмент текста документа, необm 858n137i 3;одимо скопировать текст в буфер обмена, а затем уже вставить в новое место своего документа. Второй функцией буфера обмена является поддержка простейшей формы информационного межпроцес­сного взаимодействия для различных приложений Windows

API

Clipboard

ChangeClipboardChain

CloseClipboard

CountClipboardFormats

EmptyClipboard

EnumClipboardFormats

GetClipboardData

GetClipboardFormatName

GetClipboardOwner

GetClipboardViewer

GetOpenClipboardWindow

GetPriorityClipboardFormat

IsClipboardFormatAvailable

OpenClipboard

RegisterCHpboardFormat

SetClipboardData

SetClipboardViewer

OpenClipboard EmptyClipboard SetClipboardData GetClipboardData CloseClipboard API, как правило, используются лишь некоторые из них. Боль­шинство же применяются только в особm 858n137i 9;х, редко возникающих ситуациях. Что касается подсистемы работы с буфером обмена, то программа может, например, отслеживать содержимое последнего. Такие программы называются программами просмотра буфера обмена (clipboard viewer API Windows

Windows



1) выделить блок глобальной памяти, достаточный для того, чтобm 858n137i 9; хранить в нем данные, которые необm 858n137i 3;одимо поместить в буфер обмена;

// Выделить блок глобальной памяти и получить

// его дескриптор

hGout GlobalAlloc GHND GMEM DDESHARE

(DWORD)MAXSIZE);

=(char*)GlobalLock(hGout);

// Операторы копирования текста

// в глобальную память

GlobalUnlock(hGout);

if(OpenClipboard(hwnd))

hGout GlobalAlloc

HGLOBAL GlobalAlloc(UINT How, DWORD dwSize);

GlobalAlloc NULL dwSize NULL How

GHND

GMEM_DDESHARE

c

GMEM_DISCARDABLE

GMEM_LOWER

GMEM_NOCOMPACT

GMEM NODISCARD

GMEM_SHARE

To GMEM DDESHARE

GMEM ZEROINIT

GPTR

GlobalAlloc

GlobalAlloc GlobalAlloc GlobalLock

LPVOID GlobalLock HGLOBAL hObj

GlobalLock hObj GlobalLock NULL при возникновении ошибки. Чтобm 858n137i 9; осуществить обращение к глобальным блокам памяти, эти блоки нужно обязательно зафиксиро­вать. Таким образом, вызов функции GlobalLock

После получения указателя на глобальный блок памяти необm 858n137i 3;одимо скопировать в этот блок данные, которые Вы хотите поместить в буфер обмена. Когда копирование завершится, блок памяти можно разблокировать, вызвав функцию GlobalUnlock

BOOL GlobalUnlock HGLOBAL hObj

GlobalUnlock hObj

OpenClipboard



BOOL OpenClipboard HWND hWnd

OpenClipboard hWnd

EmptyClipboard

BOOL EmptyClipboard void

EmptyClipboard

Чтобm 858n137i 9; записать данные в буфер обмена, его следует настроить на память, содержа­щую эти данные. Это делается при помощи вызова функции SetClipboardData

HANDLE SetClipboardData UINT Format HANDLE hData

SetClipboardData hData NULL

Format

CF BITMAP

bitmap

CF DIB

bitmap BITMAPINFO

CF DIF

Data Interchange Format

CF_DSPBITMAP

CF_DSPENHMETAFILE

CF_DSPMETAFILEPICT

CF_DSPTEXT

F_ENHMETAFILE

CF_METAFILEPICT

METAFILEPICT

CF_OEMTEXT

OEM

CF_OWNERDISPLAY

CF_PALETTE

CF_PENDATA

CF_RIFF

(Resource Interchange File Format)

CF_SYLK

CF_TEXT

CF TIFF

TIFF

CF_WAVE

WAVE

CF UNICODETEXT

UNICODE

CF TEXT CF OEMTEXT CF UNICODETEXT CR LF CF PRTVATEFIRST CF PRIVATELAST CF GDIOBJFIRST CF GDIOBJLAST



CloseClipboard

BOOL CloseClipboard void

if(OpenClipboard(hwnd))

Чтобm 858n137i 9; получить доступ к данным, хранящимся в буфере обмена, последний должен быть открыт. После этого нужно получить дескриптор глобальной памяти, в которой хранятся данные хбуфера обмена. Это делается при помощи функции GetClipboardData

HANDLE GetClipboardData UINT Format

GetClipboardData Format NULL CF TEXT GetClipboardData GlobalLock

GetClipboardData Windows Windows

Clipboard

Приведенная ниже программа демонстрирует доступ к буферу обмена: она записывает данные в этот буфер и читает их. Профамма предназначена для чтения только текстовых данных, хотя ее можно модифицировать таким образом, чтобm 858n137i 9; она могла читать данные и других форматов. Программа записывает текст в буфер обмена по команде меню Записать в буфер и читает данные по команде Прочесть из буфера. В буфер обмена можно также записать блок текста из другой программы (текстового редактора) и затем прочесть его при помощи данной программы.

Clipboard

#include <Windows.h>

#include <String.h>

#include "Clip.h"

#define Maxsize 100

LRESULT CALLBACK WindowFunc(HWND, UINT,

WPARAM, LPARAM);

char szWinName[]="МоеОкно";  // Имя класса окна

HGLOBAL hGout, hGin;

char text[]="Это текст для буфера обмена"; 

int WINAPI WinMain(HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

return msg wParam

}

Windows

// параметров сообm 858n137i 7;ения из очереди сообm 858n137i 7;ений

LRESULT CALLBACK WindowFunc(HWND hwnd,

UINT message,

WPARAM wParam,

LPARAM lParam)

break;

case ID_READFROMCLIP:

if(OpenClipboard(hwnd))

}

break

case WM DESTROY // Завершение программы

PostQuitMessage

break

default

// Все сообm 858n137i 7;ения, не обрабатываемые в

// данной функции, направляются на обработку

// по умолчанию

return DefWindowProc(hwnd,message,

wParam lParam

}

return

}

Для этой программы необm 858n137i 3;одим следующий файл ресурсов Clipboard rc

#include <Windows.h>

#include "Clip.h"

MYMENU MENU

}

MYMENU ACCELERATORS

Clip h

#define ID_OUTTOCLIP  101

#define ID_READFROMCLIP 102


Clipboard

Microsoft Visual

Windows

7. Шилдт Г. Программирование на С и С++ для Windows. - К.: Торгово-издательское бюро BHV, 2001. - 408 с.






Document Info


Accesari: 4934
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )