Составители:
растрового изображения и записи этого изображения в буфер обмена. Команда
Write Text копирует в буфер обмена простую строку текста.
2. Рассмотреть механизм чтения и записи текста.
Текстовые операции
являются простейшими операциями, которые выполняются с буфером обмена.
Запись текста. Поскольку программа ClipBoard является одновременно и
источником, и приемником данных, первый шаг при работе с ней заключается в
передаче текстовой информации в буфер обмена. В качестве записываемого
текста выбрана фиксированная строка "The quick brown fox jumps over the lazy
red dog".
Механизм обработки текста реализован в виде функции, которая
вызывается с двумя параметрами: дескриптором приложения hwnd и
указателем строки текста lpText.
BOOL TextToClipboard( HWND hwnd, LPSTR lpText )
{
int i, wLen;
GLOBALHANDLE hGMem;
LPSTR lpGMem;
В функции TextToClipboard используются четыре локальных
переменных, но пояснений требуют только две последние из них. Переменная
hGMem содержит глобальный дескриптор блока памяти, который пока не был
выделен. Вторая переменная, lpGMem, служит указателем блока памяти.
После инициализации переменной wLen и присвоения ей значения длины
текстовой строки дескриптор hGMem становится идентификатором
глобального блока памяти, выделенного для хранения копии текста. Однако
обратите внимание, что значение переменной wLen на единицу больше длины
строки, поскольку в строку входит еще и завершающий пустой символ. В буфер
обмена текст всегда записывается в формате ASCIIZ (или ANSIZ):
wLen = strlen( lpText );
hGMem = GlobalAlloc( GHND, (DWORD) wLen + 1 );
lpGMem = GlobalLock( hGMem );
Наконец, переменной lpGMem присваивается указатель блока памяти,
полученный в результате выполнения функции GlobalLock. Но не забывайте,
что спецификация GHND
объявляет этот блок как перемещаемый. Функция
GlobalLock временно предотвращает перемещение блока памяти операционной
системой.
Вторая особенность спецификации GHND
заключается в том, что
выделенный блок памяти освобождается от своего текущего содержимого и
заполняется нулями. Таким образом, следующая операция - это копирование в
выделенный блок памяти локальной строки, заданной указателем lpText:
34
растрового изображения и записи этого изображения в буфер обмена. Команда Write Text копирует в буфер обмена простую строку текста. 2. Рассмотреть механизм чтения и записи текста. Текстовые операции являются простейшими операциями, которые выполняются с буфером обмена. Запись текста. Поскольку программа ClipBoard является одновременно и источником, и приемником данных, первый шаг при работе с ней заключается в передаче текстовой информации в буфер обмена. В качестве записываемого текста выбрана фиксированная строка "The quick brown fox jumps over the lazy red dog". Механизм обработки текста реализован в виде функции, которая вызывается с двумя параметрами: дескриптором приложения hwnd и указателем строки текста lpText. BOOL TextToClipboard( HWND hwnd, LPSTR lpText ) { int i, wLen; GLOBALHANDLE hGMem; LPSTR lpGMem; В функции TextToClipboard используются четыре локальных переменных, но пояснений требуют только две последние из них. Переменная hGMem содержит глобальный дескриптор блока памяти, который пока не был выделен. Вторая переменная, lpGMem, служит указателем блока памяти. После инициализации переменной wLen и присвоения ей значения длины текстовой строки дескриптор hGMem становится идентификатором глобального блока памяти, выделенного для хранения копии текста. Однако обратите внимание, что значение переменной wLen на единицу больше длины строки, поскольку в строку входит еще и завершающий пустой символ. В буфер обмена текст всегда записывается в формате ASCIIZ (или ANSIZ): wLen = strlen( lpText ); hGMem = GlobalAlloc( GHND, (DWORD) wLen + 1 ); lpGMem = GlobalLock( hGMem ); Наконец, переменной lpGMem присваивается указатель блока памяти, полученный в результате выполнения функции GlobalLock. Но не забывайте, что спецификация GHND объявляет этот блок как перемещаемый. Функция GlobalLock временно предотвращает перемещение блока памяти операционной системой. Вторая особенность спецификации GHND заключается в том, что выделенный блок памяти освобождается от своего текущего содержимого и заполняется нулями. Таким образом, следующая операция - это копирование в выделенный блок памяти локальной строки, заданной указателем lpText: 34
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »