WCC(Windows Clipboard Control)是一种用于控制Windows剪贴板的COM组件。我们可以使用WCC来实现程序控制跳转画面和图片居中。
跳转画面
使用WCC跳转画面非常简单,只需要以下几步:
-
创建一个WCC对象:
IWccClipboard wccobj = NULL;
-
初始化WCC对象:
wccobj->Initialize();
-
获取剪贴板数据:
wccobj->GetData(CF_TEXT, &data);
-
判断剪贴板数据是否为URL:
if (data.IsUnicode() && data.GetLength() > 4 && data.GetBuffer()[0] == 'h' && data.GetBuffer()[1] == 't' && data.GetBuffer()[2] == 't' && data.GetBuffer()[3] == 'p')
-
如果剪贴板数据为URL,则跳转画面:
ShellExecute(NULL, NULL, data.GetBuffer(), NULL, NULL, SW_SHOW);
-
释放WCC对象:
wccobj->Release();
图片居中
使用WCC图片居中也比较简单,只需要以下几步:
-
创建一个WCC对象:
IWccClipboard wccobj = NULL;
-
初始化WCC对象:
wccobj->Initialize();
-
获取剪贴板数据:
wccobj->GetData(CF_BITMAP, &data);
-
判断剪贴板数据是否为图片:
if (data.IsUnicode() && data.GetLength() > 4 && data.GetBuffer()[0] == 'B' && data.GetBuffer()[1] =='M' && data.GetBuffer()[2] == 'P' && data.GetBuffer()[3] == ' ')
-
如果剪贴板数据为图片,则居中图片:
DrawCenteredImage(data.GetBuffer(), 100, 100);
-
释放WCC对象:
wccobj->Release();
示例代码
以下是程序控制WCC跳转画面和图片居中的示例代码:
c++
include
include
include
// 跳转画面函数
void JumpToURL()
{// 创建WCC对象IWccClipboard wccobj = NULL;wccobj = CoCreateInstance(__uuidof(WccClipboard), NULL, CLSCTX_INPROC_SERVER, __uuidof(IWccClipboard));// 初始化WCC对象wccobj->Initialize();// 获取剪贴板数据_variant_t data;wccobj->GetData(CF_TEXT, &data);// 判断剪贴板数据是否为URLif (data.IsUnicode() && data.GetLength() > 4 && data.GetBuffer()[0] == 'h' && data.GetBuffer()[1] == 't' && data.GetBuffer()[2] == 't' && data.GetBuffer()[3] == 'p'){// 跳转画面ShellExecute(NULL, NULL, data.GetBuffer(), NULL, NULL, SW_SHOW);}// 释放WCC对象wccobj->Release();
}// 图片居中函数
void CenterImage(BYTE imageData, int width, int height)
{// 创建WCC对象IWccClipboard wccobj = NULL;wccobj = CoCreateInstance(__uuidof(WccClipboard), NULL, CLSCTX_INPROC_SERVER, __uuidof(IWccClipboard));// 初始化WCC对象wccobj->Initialize();// 获取剪贴板数据_variant_t data;wccobj->GetData(CF_BITMAP, &data);// 判断剪贴板数据是否为图片if (data.IsUnicode() && data.GetLength() > 4 && data.GetBuffer()[0] == 'B' && data.GetBuffer()[1] == 'M' && data.GetBuffer()[2] == 'P' && data.GetBuffer()[3] == ' '){// 居中图片DrawCenteredImage(data.GetBuffer(), width, height);}// 释放WCC对象wccobj->Release();
}// 主函数
int main()
{// 检测剪贴板是否发生变化while (true){// 获取剪贴板数据_variant_t data;wccobj->GetData(CF_TEXT, &data);// 判断剪贴板数据是否为URLif (data.IsUnicode() && data.GetLength() > 4 && data.GetBuffer()[0] == 'h' && data.GetBuffer()[1] == 't' && data.GetBuffer()[2] == 't' && data.GetBuffer()[3] == 'p'){// 跳转画面JumpToURL();}// 判断剪贴板数据是否为图片if (data.IsUnicode() && data.GetLength() > 4 && data.GetBuffer()[0] == 'B' && data.GetBuffer()[1] == 'M' && data.GetBuffer()[2] == 'P' && data.GetBuffer()[3] == ' '){// 居中图片CenterImage(data.GetBuffer(), 100, 100);}}return 0;
}
注意事项
需要注意的是,程序控制WCC需要COM组件支持,因此需要在项目中添加comref.h和atlbase.h头文件。
word插入图片不居中是怎么回事?
word 插入图片不能居中是错误插入造成的,居中方法为:
1、打开word文档后,点击菜单栏的【插入】-【图片】-【来自文件】。
2、在跳转的窗口选好要插入的图片,单击【确定】就可以成功插入图片了。
3、鼠标单击一下图片,在图片右侧会出现【布局选项】,我们单击一下它。
4、进入布局设置页面后,如果只需对水平位置进行居中方式对其的话,按照如下图片所示设置即可。
5、回到word文档主界面,即可看到图片已被水平居中设置。
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论