对 CSDN 没什么信心了 居然这么久了又没人回答....

解决方案 »

  1.   

    我没听过sendmessage可以获得图像的
      

  2.   

    sendmessage(,WM_GETTEXT,,)
    这样不就是可以得到 文本了吗??那我想得到图片应该怎么办呢 ??
      

  3.   

    你这个问题太牛了。
    用SendMessage得到图片。
      

  4.   

    =_=  啊  在下只是实习中的软件专业本科生,不过在下认为sendmessage(WM_GETTEXT)的意思不是得到文本,而是发出“得到文本”这条消息才对,真正处理“得到文本”这个“事件”的代码在别的地方,在哪里表问我。。
      

  5.   

    可以的,随便用哪个参数都行,WPARAM,LPARAM.图片可以读到内存里,比如char* buff,然后SendMessage(hwnd,msg,(WPARAM)buff,pParam);
    收到时,读:char* temp = (char*)wParam;
    可能有类型转换的问题,自己改改就行了。
    不过这种方法不好,因为图片尽寸大,太浪费内存。也不灵活。Windows有个操作Ole剪切板的函数,用那个比较方便。
    下面是MFC2 那本书的例子:
    // Copy the text string to a global memory block.
    char szText[] = "Hello, world";
    HANDLE hData = ::GlobalAlloc (GMEM_MOVEABLE, ::lstrlen (szText) + 1);
    LPSTR pData = (LPSTR) ::GlobalLock (hData);
    ::lstrcpy (pData, szText);
    ::GlobalUnlock (hData);// Initialize a FORMATETC structure and a STGMEDIUM structure that
    // describe the data and the location at which it's stored.
    FORMATETC fe;
    fe.cfFormat = CF_TEXT;          // Clipboard format=CF_TEXT
    fe.ptd = NULL;               // Target device=Screen
    fe.dwAspect = DVASPECT_CONTENT;     // Level of detail=Full content
    fe.lindex = -1;               // Index=Not applicable
    fe.tymed = TYMED_HGLOBAL;     // Storage medium=MemorySTGMEDIUM stgm;
    stgm.tymed = TYMED_HGLOBAL;     // Storage medium=Memory
    stgm.hGlobal = hData;          // Handle to memory block
    stgm.pUnkForRelease = NULL;     // Use ReleaseStgMedium// Place the data object on the OLE clipboard.
    pdo->SetData (&fe, &stgm, FALSE);
    ::OleSetClipboard (pdo);
    pdo->Release ();
    //下面是从剪切板读出来
    char szText[BUFLEN];
    IDataObject* pdo;
    STGMEDIUM stgm;FORMATETC fe = {
        CF_TEXT, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL
    };if (SUCCEEDED (::OleGetClipboard (&pdo))) {
        if (SUCCEEDED (pdo->GetData (&fe, &stgm) && stgm.hGlobal != NULL)) {
            LPCSTR pData = (LPCSTR) ::GlobalLock (stgm.hGlobal);
            if (::lstrlen (pData) < BUFLEN)
                ::lstrcpy (szText, pData);
            ::GlobalUnlock (stgm.hGlobal);
            ::ReleaseStgMedium (&stgm);
        }
        pdo->Release ();
    }