不用剪贴板,直接pWnd->SetWindowText("hehe");

解决方案 »

  1.   

    我认为OSE(某某人)说的不对!因为SETWINDOWTEXT()函数对于不同的情况有不同的处理方式
    如果是个窗口那么只是窗口的标题而对于CEDIT 则是编辑框中的内容!按钮则是按钮上的文字!
    具体的实现如下:
     利用COLEDATAOBJECT对应的对象该对象可以检查是否有正确的数据类型可供利用如果有就接收其数据通过CArchive 和CSharedFile的组合将数据从剪贴板放到文档中
        COleDataObject oleTarget;
        oleTarget.AttachClipboard();
        if(oleTarget.IsDataAvailiable(m_uclipformat))
           {
             HANDLE hGlobalmem=oleTarget.GetGlobalData(m_uclipformat);
        if(hGlobalmem)
         {
           CSharedFile fileTarget;
           fileTarget.SetHandle(hGlobalmem);
           CArchive arTarget(&fileTarget,CArchive ::load);
           DeleteBlobs();
           Serialize(arTarget);
           UpdateAllViews(NULL);
         }懂不懂看你自己了!SEE YOU LATER!
      

  2.   

    to wzgeorge:
    你可能没有明白我的意思。 我的意思是不是把剪贴板里的东西粘贴到我的程序里,从剪贴板取数据我已经实现了。我是想把我程序A里的东西放到剪贴板中,如何向另外一个程序B发送消息,使剪贴板中的东西粘贴到B中的文本框或者view中光标所在的地方。现在的问题就是如何实现从剪贴板到程序B的粘贴
      

  3.   

    _AFXWIN_INLINE void CEdit::Clear()
    { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
    _AFXWIN_INLINE void CEdit::Copy()
    { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
    _AFXWIN_INLINE void CEdit::Cut()
    { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
    _AFXWIN_INLINE void CEdit::Paste()
    { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
    你发消息就可以了
      

  4.   

    to jiangsheng
    我用m_pWnd->SendMessage(WM_PASTE, 0, 0); 
    m_pWnd是另外一个程序的窗口指针,但是不行
      

  5.   

    用spy++看看到底是不是标准的Edit
    还有,那个程序是否禁用了paste
      

  6.   

    我用spy++查看了消息,把spy++中的消息的结构放到程序里,现在可以在一些地方用了
    但是一些程序还是不能用
      

  7.   

    这样总可以吧:
    CString strOld;
    pWnd->GetWindowText(strOld);
    CString strNew(strOld + "SomeString");
    pWnd->SetWindowText(strNew); 
      

  8.   

    msdn里有,好像是: Win32API   ClipboardPast()