Составители:
Рубрика:
предоставляет ему доступ к своему окну. Программа просмотра может послать
пять различных сообщений:
1. WM_ASKCBFORMATNAME – посылается для запроса копии имени
формата у владельца буфера обмена. При этом не следует забывать о том, что
сам буфер обмена содержит лишь идентификатор CF_OWNERDISPLAY,
по-
этому программа просмотра имеет возможность самостоятельно принимать
решение о том, нужно ли ей знать реальный тип данных. Сообщение
WM_ASKCBFORMATNAME
сопровождается указанием в аргументе wParam
количества копируемых байтов. Аргумент lParam содержит указатель на бу-
фер, в который должен быть отправлен результат.
2. WM_HSCROLLCLIPBOARD / WM_VSCROLLCLIPBOARD – посы-
лаются в том случае, когда программа просмотра содержит вертикальную или
горизонтальную полосу прокрутки и связанные с ними события должны пере-
даваться владельцу буфера обмена. В аргументе wParam хранится дескриптор
окна программы просмотра, а в аргументе lParam – стандартные идентифика-
торы, которые сопровождают сообщения WM_HSCROLL
и WM_VSCROLL.
3. WM_PAINTCLIPBOARD – посылается в качестве запроса на обновле-
ние окна программы просмотра, – возможно, в ответ на сообщение
WM_PAINT.
Аргумент wParam содержит дескриптор окна программы про-
смотра. Аргумент lParam представляет собой глобальный дескриптор объекта,
содержащего структуру PAINTSTRUCT,
которая задает обновляемую область
экрана. Чтобы определить, вся ли рабочая область окна требует обновления,
владелец буфера обмена должен сравнить размеры области рисования, кото-
рые содержатся в поле repaint структуры PAINTSTRUCT,
с размерами, указан-
ными в последнем сообщении WM_SIZECLIPBOARD.
4. WM_SIZECLIPBOARD – посылается для указания того, что окно про-
граммы просмотра изменило свои размеры. Аргумент wParam содержит деск-
риптор окна просмотра. Аргумент lParam представляет собой глобальный деск-
риптор объекта, содержащего структуру RECT,
которая задает обновляемую
область.
В ответ на любое из этих сообщений владелец буфера обмена должен вы-
звать функцию InvalidateRect() или обновить окно просмотра и соответствую-
щим образом установить позицию бегунков полос прокрутки.
Приложения могут также объявлять собственные частные форматы бу-
фера обмена, зарегистрировав новый формат с помощью функции Register-
ClipboardFormat():
wFormat = RegisterClipboardFormat( lpszFormatTitle );…
Новый идентификатор wFormat получает значение из диапазона от
0xC000 до 0xFFFF и может использоваться как параметр функций SetClip-
boardData() и GetClipboardData(). Чтобы другие приложения или другой эк-
земпляр того же приложения смогли прочитать данные из буфера обмена
в этом формате, им необходимо предоставить аналогичный идентификатор
wFormat. Его значение может передаваться через буфер обмена в формате
CF_TEXT.
88
предоставляет ему доступ к своему окну. Программа просмотра может послать
пять различных сообщений:
1. WM_ASKCBFORMATNAME – посылается для запроса копии имени
формата у владельца буфера обмена. При этом не следует забывать о том, что
сам буфер обмена содержит лишь идентификатор CF_OWNERDISPLAY, по-
этому программа просмотра имеет возможность самостоятельно принимать
решение о том, нужно ли ей знать реальный тип данных. Сообщение
WM_ASKCBFORMATNAME сопровождается указанием в аргументе wParam
количества копируемых байтов. Аргумент lParam содержит указатель на бу-
фер, в который должен быть отправлен результат.
2. WM_HSCROLLCLIPBOARD / WM_VSCROLLCLIPBOARD – посы-
лаются в том случае, когда программа просмотра содержит вертикальную или
горизонтальную полосу прокрутки и связанные с ними события должны пере-
даваться владельцу буфера обмена. В аргументе wParam хранится дескриптор
окна программы просмотра, а в аргументе lParam – стандартные идентифика-
торы, которые сопровождают сообщения WM_HSCROLL и WM_VSCROLL.
3. WM_PAINTCLIPBOARD – посылается в качестве запроса на обновле-
ние окна программы просмотра, – возможно, в ответ на сообщение
WM_PAINT. Аргумент wParam содержит дескриптор окна программы про-
смотра. Аргумент lParam представляет собой глобальный дескриптор объекта,
содержащего структуру PAINTSTRUCT, которая задает обновляемую область
экрана. Чтобы определить, вся ли рабочая область окна требует обновления,
владелец буфера обмена должен сравнить размеры области рисования, кото-
рые содержатся в поле repaint структуры PAINTSTRUCT, с размерами, указан-
ными в последнем сообщении WM_SIZECLIPBOARD.
4. WM_SIZECLIPBOARD – посылается для указания того, что окно про-
граммы просмотра изменило свои размеры. Аргумент wParam содержит деск-
риптор окна просмотра. Аргумент lParam представляет собой глобальный деск-
риптор объекта, содержащего структуру RECT, которая задает обновляемую
область.
В ответ на любое из этих сообщений владелец буфера обмена должен вы-
звать функцию InvalidateRect() или обновить окно просмотра и соответствую-
щим образом установить позицию бегунков полос прокрутки.
Приложения могут также объявлять собственные частные форматы бу-
фера обмена, зарегистрировав новый формат с помощью функции Register-
ClipboardFormat():
wFormat = RegisterClipboardFormat( lpszFormatTitle );…
Новый идентификатор wFormat получает значение из диапазона от
0xC000 до 0xFFFF и может использоваться как параметр функций SetClip-
boardData() и GetClipboardData(). Чтобы другие приложения или другой эк-
земпляр того же приложения смогли прочитать данные из буфера обмена
в этом формате, им необходимо предоставить аналогичный идентификатор
wFormat. Его значение может передаваться через буфер обмена в формате
CF_TEXT.
88
Страницы
- « первая
- ‹ предыдущая
- …
- 86
- 87
- 88
- 89
- 90
- …
- следующая ›
- последняя »
