PostMessage不适用于WM_PASTE,mfc

时间:2013-12-06 04:58:44

标签: c++ mfc postmessage

我有一个应用程序,点击按钮上有一个按钮我试图将已经可用的文本粘贴到记事本。我的应用程序首先收集文本并将其放在剪贴板上(这非常正常),我遇到了粘贴部分的问题。这是代码,请让我知道我哪里出错了。

CWnd *pCwnd = FindWindow(NULL, _T("Untitled - Notepad"));
    HWND handle = pCwnd->GetSafeHwnd();
    pCwnd->PostMessageA(WM_PASTE,0,0);

我正在使用记事本对其进行测试,因此名称为(“Untitled - Notepad”)。 请帮我。提前谢谢。

1 个答案:

答案 0 :(得分:3)

我不使用MFC,但你可以翻译成你需要的东西。问题是您需要将消息发送到编辑控件,而不是主窗口。

#include <Windows.h>
#include <string>
#include <cstdlib>

int main()
{
    const std::string data("This is some text from the clipboard.");
    HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, data.size() + 1);
    std::memcpy(GlobalLock(hMem), data.c_str(), data.size() + 1);
    GlobalUnlock(hMem);
    OpenClipboard(NULL);
    EmptyClipboard();
    SetClipboardData(CF_TEXT, hMem);
    CloseClipboard();

    HWND mainWindow = FindWindow(NULL, "Untitled - Notepad");
    HWND editWindow = FindWindowEx(mainWindow, NULL, "edit", NULL);
    PostMessage(editWindow, WM_PASTE, 0, 0);
    return 0;
}