Click here to Skip to main content
15,888,803 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am working in C++ Win32 Application and I implementing DragAndDrop operation, I can able to drag a files and folders from explorer to my application using WndProc calls with WM_DROPFILES, Now I trying for DragAndDrop files and folders from Win32 application to explorer.
can some one help me to implement in c++?

What I have tried:

I am using Interfaces I data object ,I data source,I data droptarget.
Posted
Updated 24-Jan-19 0:46am
Comments
Richard MacCutchan 24-Jan-19 4:59am    
What exactly is the problem?
Member 14075717 24-Jan-19 5:37am    
I have to implement the drag and drop feature for win32 api application in c++. For drop i have message(WM_DROPFILES)(https://docs.microsoft.com/en-us/windows/desktop/shell/wm-dropfiles) but to drag files i don't have any messsage so i'm trying using DODRAGDROP API but I am facing problem to implementing it .So can you please help me to implement using the DODRAGDROP or any other way of doing it in C++ .

Thanks in advance

1 solution

 
Share this answer
 
Comments
Member 14075717 24-Jan-19 7:25am    
HI can i use the same API'S FOR WIN32 Application which they are used in the above code sample which is implemented for MFC application?
Richard MacCutchan 24-Jan-19 7:55am    
The article explains what is needed to create a dropfiles list which can be sent to Explorer. Although the application is written in MFC the actual droplist creation and adding to the clipboard uses standard Win32 features. The only part you need to change is to use an ordinary character array, or std::string, for the list of filenames.
Member 11393783 11-Mar-19 7:29am    
Hi ,


We tried implementing IdataObject and IdropSource and how to fill the file details in the FORMATETC and etc.. Please help with this.

Written some code in C. How to calll the shellAPI's in CPP code.

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);

Thanks,
Venkat

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900