Member 14075717 Ответов: 1

В приложении win 32 теперь я могу делать перетаскивание но растровые данные не приходят любая помощь будет апприоцирована


pITEMDLIST_File = ILCreateFromPath(fName);
					if (!pITEMDLIST_File)
						return 0;

					iResu = SHBindToParent(pITEMDLIST_File, &IID_IShellFolder, (void**)&pFolder, (PCUITEMID_CHILD*)&pFile_list_relative);
					if (iResu != S_OK)
						return 0;

					pArray[0] = pFile_list_relative;
					iResu = IShellFolder_GetUIObjectOf(pFolder, NULL, 1, pArray, riid, NULL, (void**)&pInterfaceResu);
					if (iResu != S_OK)
						return 0;

					IShellFolder_Release(pFolder);

					//return pInterfaceResu;
					pObj = (IDataObject*)pInterfaceResu;
				}

				if (!pObj)
					break;

				pSrc = _CreateDropSource();
				if (!pSrc)
				{
					//IDataObject_Release(pObj);
					break;
				}

				DoDragDrop(pObj, NULL, DROPEFFECT_COPY DROPEFFECT_LINK, &dwEffect);


Что я уже пробовал:

Используя приведенный выше код прямо сейчас, я могу делать перетаскивание, но при перетаскивании из окна выходит только символ плюса, но мне нужны данные мыши .Например ,если я перетаскиваю папку, то изображение папки должно прийти.может ли кто-нибудь помочь с этим

1 Ответов

Рейтинг:
7

KarstenK

Вы находитесь на грани операции перетаскивания. Прочитайте Документация DoDragDrop.

Вы должны извлечь объект данных (pObj) данные для работы с ними. Возможно, данные неправильно установлены в источнике.

совет: используйте некоторую внешнюю программу (например, MS Paint) для моделирования растровых данных


Member 14075717

Привет карстенк, как вы сказали, от локальной машины(проводник) к удаленной машине(хост или мое приложение) я сделал это означает, что я реализовал цель idrop, но я должен сделать перетаскивание виртуального файла с хоста(мое приложение ) на локальную машину(проводник).Я думаю, что мы должны реализовать объект данных i. я хочу знать, как реализовать idataobject, можете ли вы дать мне механизм или какую-либо идею? танк ты