На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Adding Drop Source Capabilities



To enable your application to become the source of a drag and drop operation, follow these steps:

1. Initialize the OLE libraries. Any application that uses the OLE libraries must check the version of the libraries and call the OleInitialize function during its initialization.

You should make sure that the system's OLE libraries are at least as recent as the ones for which the application was written.
Before you call any other OLE functions, you must call OleInitialize to initialize the OLE libraries. Because each call to OleInitialize must have a matching call to the OleUninitialize function, you should maintain an fOleInitialized flag so that you will know whether to call OleUninitialize when your application exits.

2. Implement the IDropSource interface. Not including the member functions that it inherits from IUnknown, IDropSource has only two member functions: QueryContinueDrag and GiveFeedback. OLE calls QueryContinueDrag intermittently during the drag operation. Its parameters include the state of the keyboard, which the drop source uses to control the drag operation. The drop source returns the S_OK value to continue dragging, the DRAGDROP_CANCEL value to cancel dragging, or the DRAGDROP_DROP value to drop the object.

3. OLE calls GiveFeedback to tell the drop source to update the cursor and ask the source window for visual feedback about what would happen if the user dropped at the current point. It sounds like a lot of work to update the cursor, but OLE will use its default cursors if the DRAGDROP_S_USEDEFAULTCURSORS value is returned.
4. Implement the IDataObject interface, which is used by OLE applications to transfer data. In a drag and drop operation, the drop source gives OLE a pointer to its IDataObject implementation. OLE saves the pointer and passes it to the drop target when the cursor first enters the target window and when the drop occurs. Fortunately, you only need to implement the following (non-IUnknown) IDataObject member functions for drag and drop support: GetData, GetDataHere, QueryGetData, and EnumFormatEtc.

5. Call the DoDragDrop function to begin the drag operation. After you have detected that the user wants to drag something, you should call DoDragDrop
. OLE uses the IDataObject and IDropSource pointers that are passed in, along with its list of registered drop targets, to control the drag operation. When the drag operation is complete, DoDragDrop returns either the DRAGDROP_S_DROP or DRAGDROP_S_CANCEL value. In addition, OLE returns a DWORD in the address pointed to by pdwEffect that tells how the drop should affect the source dataѕthat is, whether the operation was a move, copy, link, or scroll. You should look at the pdwEffect value and modify the source data as necessary.

6. Call OleUninitialize. Before an OLE application exits, it must call OleUninitialize to release the OLE libraries. You should check your fOleInitialized flag before calling OleUninitialize and should only call OleUninitialize if OleInitialize returned successfully.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Дополнение Исходных Возможностей Капли



Для того, чтобы позволять приложение, чтобы становиться источником действия перераспределения, последуйте за этими шагами:

1. Инициализируйте библиотеки OLE. Любое приложение, которое использует библиотеки OLE должно проверить версию библиотек и называть функцию OleInitialize в течение своей инициализации.

Вы должны убедиться, что системные библиотеки OLE по крайней мере такие же последние как те для которого приложение было написано.
Прежде, чем Вы назовете любые другие функции OLE, Вы должны назвать OleInitialize, чтобы инициализировать библиотеки OLE. Поскольку каждый вызов на OleInitialize должен иметь сопоставление вызова в функции OleUninitialize, Вы должны поддержать fOleInitialized флаг чтобы Вы узнали независимо, что назовете OleUninitialize когда ваше приложение выходит.

2. Осуществите интерфейс IDropSource. Не включая член функционирует, что он наследуется из IUnknown, IDropSource имеет только две функции члена: QueryContinueDrag и GiveFeedback. OLE НАЗЫВАЕТ QueryContinueDrag нерегулярно в течение действия помехи. Параметры включают состояние клавиатуры, которую источник капли использует, чтобы управлять действием помехи. Источник капли возвращает величину S_OK, чтобы продолжать тащиться, величина DRAGDROP_CANCEL, чтобы отменять перемещение, или величину DRAGDROP_DROP, чтобы бросать объект.

3. OLE НАЗЫВАЕТ GiveFeedback, чтобы сообщать источник капли, чтобы корректировать курсор и спрашивать исходное окно для визуальной обратной связи о котором должно случаться если потребитель падал бы в текущей точке. Это звучит подобно много работе, чтобы корректировать курсор, но OLE использует свои встроенные курсоры если величина DRAGDROP_S_USEDEFAULTCURSORS возвращана.
4. Осуществите интерфейс IDataObject, который использован приложениями OLE, чтобы передавать данные. На операции перераспределения, источник капли дает OLE указатель в свою реализацию IDataObject. OLE СОХРАНЯЕТ указатель и передает это в цель капли когда первые вводы курсора целевое окно и когда капля происходит. К счастью, Вам только нужно осуществлять следующее (не-IUnknown), которое элемент IDataObject функционирует для поддержки перераспределения: GetData, GetDataHere, QueryGetData, и EnumFormatEtc.

5. Назовите функцию DoDragDrop, чтобы начинать операцию помехи. После того, как Вы обнаружили, что пользователь хочет тащить что-то, Вы должны называть DoDragDrop. OLE ИСПОЛЬЗУЕТ IDataObject и указатели IDropSource, которые пройдены в, вместе с своим списком зарегистрированных целей капли, чтобы управлять операцией помехи. Когда операция помехи является завершен, возвратом DoDragDrop или DRAGDROP_S_DROP или величиной DRAGDROP_S_CANCEL. Кроме того, OLE возвращает DWORD в адресе указанном, чтобы pdwEffect, которое сообщает как капля должна повлиять на источник dataUthat -, независимо операция была перемещением, копией, связью или перемещается. Вы должны смотреть на величину pdwEffect и модифицировать исходные данные как необходимый.

6. Назовите OleUninitialize. Перед прикладными выходами OLE, это должно назвать OleUninitialize, чтобы выпускать библиотеки OLE. Вы должны проверять ваш fOleInitialized флаг прежде, чем вызов OleUninitialize и должен только называть OleUninitialize если OleInitialize возвращался бы успешно.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz