VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 506|回复: 7

为什么我这样做复制不了位图呢?

[复制链接]

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-13 17:00:01 | 显示全部楼层 |阅读模式

我在VC中用下面的代码复制一副位图,运行正常,但是怎么在WORD上粘贴没显示啊?
m_WaveUIBmpCtrl是一个Picture控件的变量,该控件上显示着一副位图,从文件导入。
        HBITMAP hBitmap = NULL;

        BeginWaitCursor();
       
        hBitmap = m_WaveUIBmpCtrl.GetBitmap();
        VERIFY(hBitmap);

        VERIFY(OpenClipboard());
        VERIFY(EmptyClipboard());
        VERIFY(SetClipboardData (CF_BITMAP, hBitmap ));
        VERIFY(CloseClipboard ());
       
        EndWaitCursor();

请问复制位图该怎么做啊???
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-1-19 19:18:01 | 显示全部楼层
如果能在画图板中粘贴的话,那可能是因为WORD用的是自定义的剪切板格式。
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-24 12:36:01 | 显示全部楼层
有人做过么?
帮个忙回答一下啊
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-25 12:45:01 | 显示全部楼层
顶起来
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-25 19:27:02 | 显示全部楼层
把HBITMAP转换成DIB,然后使用CG_DIB就可以了。
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-2-5 13:00:02 | 显示全部楼层
楼上的,你好
谢谢你的回帖。

“复制位图”这个问题,我在网上找了资料,最后我写成这样了,你帮我看看,可以更优化么?
        CBitmap bitmap;
        CClientDC dc(GetDlgItem(IDC_WAVE_UI_BMP));
        CDC memDC;
        CRect rect(0, 0, 0, 0);
        VERIFY(memDC.CreateCompatibleDC(&dc));
        GetDlgItem(IDC_WAVE_UI_BMP)->GetWindowRect(rect);
       
        VERIFY(bitmap.CreateCompatibleBitmap(&dc, rect.Width(),rect.Height()));
        CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
        VERIFY(memDC.BitBlt(0, 0, rect.Width(),rect.Height(), &dc, 0, 0, SRCCOPY));
       
        VERIFY(::OpenClipboard(NULL));
        VERIFY(::EmptyClipboard());
        VERIFY(SetClipboardData (CF_BITMAP, bitmap.GetSafeHandle()));
        ::CloseClipboard() ;
       
        memDC.SelectObject(pOldBitmap);
        bitmap.Detach();
位图是显示在DI为“IDC_WAVE_UI_BMP”的Picture控件上的。
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-2-5 16:45:01 | 显示全部楼层
再问个问题,

我从文件导入一张位图到Picture控件中显示,我的要求是:
我的控件可以改变大小,我的位图随着控件的大小改变而改变(始终完全适应控件大小)
请问我该怎么导入显示啊?????

我的代码是这样的,可是问题是:导入时是大小一致,可控件一旦改变了大小,位图就和控件不一致了。
        CRect rc;
                HBITMAP hBitmap = NULL;
                GetDlgItem(IDC_WAVE_UI_BMP)->GetWindowRect(&rc);       
                VERIFY(strcmp(G_OpenFileName, ""));
                hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),G_OpenFileName,
                        IMAGE_BITMAP,rc.Width(),rc.Height(), LR_CREATEDIBSECTION|LR_LOADFROMFILE);
                m_WaveUIBmpCtrl.ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
                m_WaveUIBmpCtrl.SetBitmap(hBitmap);
帮我看看啊 ,大侠们!
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-2-20 15:15:02 | 显示全部楼层
up
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表