大家看看这个怎么实现 不用剪贴板,直接pWnd->SetWindowText("hehe"); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我认为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! to wzgeorge:你可能没有明白我的意思。 我的意思是不是把剪贴板里的东西粘贴到我的程序里,从剪贴板取数据我已经实现了。我是想把我程序A里的东西放到剪贴板中,如何向另外一个程序B发送消息,使剪贴板中的东西粘贴到B中的文本框或者view中光标所在的地方。现在的问题就是如何实现从剪贴板到程序B的粘贴 _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); }你发消息就可以了 to jiangsheng我用m_pWnd->SendMessage(WM_PASTE, 0, 0); m_pWnd是另外一个程序的窗口指针,但是不行 用spy++看看到底是不是标准的Edit还有,那个程序是否禁用了paste 我用spy++查看了消息,把spy++中的消息的结构放到程序里,现在可以在一些地方用了但是一些程序还是不能用 这样总可以吧:CString strOld;pWnd->GetWindowText(strOld);CString strNew(strOld + "SomeString");pWnd->SetWindowText(strNew); msdn里有,好像是: Win32API ClipboardPast() MFC edit控件问题 求助,WideCharToMultiByte转换为gb2312乱码! 菜鸟问题:在写开机自动运行程序时的错误(c++6.0) UrlEscape(curStr, &temp, &cchBuffer, NULL);UrlEscape未定义 为什么在class wizard里面看不到WM_SYSCOMMAND消息? 如何屏蔽键盘按键 为什么再努力这也不能成为我的爱好?———很沮丧,散分 CALLBACK 函数问题 加载位图出了问题 菜鸟问题:怎么样访问另外一个类中定义的全局变量? 请问:我想让一个复杂运算不影响其他的任务该怎么做? VC编译联接出错,请帮忙看看
如果是个窗口那么只是窗口的标题而对于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!
你可能没有明白我的意思。 我的意思是不是把剪贴板里的东西粘贴到我的程序里,从剪贴板取数据我已经实现了。我是想把我程序A里的东西放到剪贴板中,如何向另外一个程序B发送消息,使剪贴板中的东西粘贴到B中的文本框或者view中光标所在的地方。现在的问题就是如何实现从剪贴板到程序B的粘贴
{ 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); }
你发消息就可以了
我用m_pWnd->SendMessage(WM_PASTE, 0, 0);
m_pWnd是另外一个程序的窗口指针,但是不行
还有,那个程序是否禁用了paste
但是一些程序还是不能用
CString strOld;
pWnd->GetWindowText(strOld);
CString strNew(strOld + "SomeString");
pWnd->SetWindowText(strNew);