怎么使用DoDragDrop()将http://www.xx.com/1.jpg 以图片形式拖入html的编辑器
在html编辑器中直接显示图片,而不是地址

解决方案 »

  1.   

    winform里有拖放事件呀。查一下资料就行了。我记得好像是四个相关事件。挺简单的。
      

  2.   

    在winform 中使用文本编辑器或webbrower
      

  3.   

    用webbrower控件的话,肯定没问题的.但在用户接口和程序上都不好控制.
    所以我想用普通控件,通过DoDragDrop()方法实现.
      

  4.   

    #include "stdafx.h"
    #include "windows.h"
    #include "shlobj.h"
    int main(int argc, char* argv[])
    {
        char szFile[] = "W:\\zzzzzzzz\\aa\\a.ini"; 
        HWND hWnd = ::FindWindow("Notepad", NULL); 
        if(hWnd == NULL) return; 
        
        DWORD dwBufSize = sizeof(DROPFILES) + sizeof(szFile) + 1;     BYTE *pBuf = NULL; 
        LPSTR pszRemote = NULL; 
        HANDLE hProcess = NULL; 
     
         __try { 
         pBuf = new BYTE[dwBufSize]; 
         if(pBuf == NULL) __leave; 
     
         memset(pBuf, 0, dwBufSize); 
         DROPFILES *pDrop = (DROPFILES *)pBuf; 
         pDrop->pFiles = sizeof(DROPFILES); 
         strcpy((char *)(pBuf + sizeof(DROPFILES)), szFile); 
     
         DWORD dwProcessId; 
         GetWindowThreadProcessId(hWnd, &dwProcessId); 
         hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId); 
         if(hProcess == NULL) __leave; 
     
         pszRemote = (LPSTR)VirtualAllocEx(hProcess, NULL, dwBufSize, MEM_COMMIT, PAGE_READWRITE); 
         if(pszRemote == NULL) __leave; 
     
         if(WriteProcessMemory(hProcess, pszRemote, pBuf, dwBufSize, 0)) 
         ::SendMessage(hWnd, WM_DROPFILES, (WPARAM)pszRemote, NULL); 
         } 
         __finally { 
         if(pBuf != NULL) delete []pBuf; 
         if(pszRemote != NULL) VirtualFreeEx(hProcess, pszRemote, dwBufSize, MEM_FREE); 
         if(hProcess != NULL) CloseHandle(hProcess); 
         } 
    }模拟拖放到别的程序,这是以前CSDN搜到的C++代码
      

  5.   

    谢谢,楼上的。你这个拖动文件的。我也会。我要是的拖运html的格式的东西。
    不过现在已经不用了。哈.结贴