C++ WINAPI 按钮剪贴板 - 复制操作
C++ WINAPI Button Clipboard - Copy action
我对C++有点陌生,但我知道基础知识以及如何正确使用它。我只是想知道如何在 Windows 应用程序中复制到剪贴板。我希望 4 个按钮能够在单击时复制消息并将其存储在剪贴板中。下面是按钮的代码,if 语句是单击时执行的操作:
case WM_CREATE:{
CreateWindow(TEXT("BUTTON"), TEXT("Copythistext"),
WS_CHILD | WS_VISIBLE,
12,60,10,20,
hwnd, (HMENU) ID_BUTTON, NULL, NULL
);
break;
}
case WM_COMMAND:{ //this is where the button performs it's task
if(LOWORD(wParam)== ID_BUTTON) {
//this is where the task goes
}
break;
}
事件顺序:
void AddToClipboard(char* pszText)
{
int nStrLen = strlen(pszText);
HGLOBAL hMem = GlobalAlloc(nStrLen + 1, GMEM_SHARE);
char* pCopyTo = (char*) GlobalLock(hMem);
strcpy(pCopyTo, pszText);
GlobalUnlock(hMem);
OpenClipboard(NULL); // or HWND handle instead of NULL
EmptyClipboard();
SetClipboardData(CF_TEXT, hMem); // hMem is handle to memory allocated with GlobalAlloc
CloseClipboard();
}
对于hMem,你通常做一个GlobalAlloc(),GlobalLock(),将字符串复制到GlobalLock()返回的指针上,然后在句柄上做一个GlobalUnlock()
有一种奇怪的方法可以将文本从按钮发送到剪贴板:通过 SetDlgItemText + WM_LBUTTONDBLCLK 到 STATIC 并带有 SS_NOTIFY(STATIC 的大小可能为 =0)。
相关文章:
- 复制和交换习惯用法与移动操作之间的交互
- 隐式移动与复制操作和遏制
- 在 lambda 中锁定 std::shared_ptr 的复制操作
- 我什么时候会默认(而不是删除)基类中的复制和移动操作
- OLE DB 大容量复制操作始终将 true 加载到位列中
- 如何在不复制的情况下操作 QByteArray 对象?
- 复制交换习惯用法-我们可以在这里使用动态强制转换操作吗
- 复制构造函数、按值传递和按值返回、链式操作、编译器
- 在'string=string+s1'和"string+=s1"之间移动语义可以保存多少个复制操作?
- 为什么 GCC 拒绝复制赋值操作中的常量引用
- 阵列操作,复制最后一个元素
- 省略复制操作后对象无效
- 仅定义非常规复制操作
- 基本深度复制(操作重载)
- 当将指针转换为引用时,会发生复制操作
- 类复制操作,它是如何工作的
- C++:存储复制操作不合理或不可能的资源
- 为什么在声明移动操作时删除复制操作?
- 禁止复制操作是否会自动禁止移动操作
- C++ WINAPI 按钮剪贴板 - 复制操作