| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1380 人关注过本帖
标题:BitBlt()函数的讨论
只看楼主 加入收藏
yinlb1987
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-11-5
收藏
 问题点数:0 回复次数:3 
BitBlt()函数的讨论
在文档视图中
我在OnDraw()中添加如下代码
    CBitmap bmp,*poldbmp;
    GetClientRect(&m_rectClient);
    CPen pen(PS_SOLID,1,RGB(255,0,0)),*pOld;
    CBrush bkbrush(RGB(255,255,0));
/*    CDC memDC;
    memDC.CreateCompatibleDC(pDC);
    membmp.CreateCompatibleBitmap(pDC,m_rectClient.Width(),m_rectClient.Height());
    poldbmp=(CBitmap *)memDC.SelectObject(&membmp);*/

    if(m_MemDC.GetSafeHdc()==NULL)
    {
        m_MemDC.CreateCompatibleDC(pDC);
        //
        //memDC->BitBlt(
        bmp.CreateCompatibleBitmap(pDC,m_rectClient.Width(),m_rectClient.Height());
        poldbmp=m_MemDC.SelectObject(&bmp);
        pOld=m_MemDC.SelectObject(&pen);
        m_MemDC.SetBkColor(RGB(0,0,0));
        //m_MemDC.MoveTo(450,400);
        //m_MemDC.LineTo(470,300);
        m_MemDC.FillRect(m_rectClient,&bkbrush);
        m_MemDC.BitBlt(0,0,m_rectClient.Width(),m_rectClient.Height(),&m_MemDC,10,0,SRCCOPY);
        pDC->BitBlt(0,0,m_rectClient.Width(),m_rectClient.Height(),&m_MemDC,0,0,SRCCOPY);
        bmp.DeleteObject();
        m_MemDC.SelectObject(poldbmp);
        m_MemDC.SelectObject(pOld );
        //memDC->DeleteDC();
        m_MemDC.DeleteDC();
    }

    else
    {
        m_MemDC.TextOut(100,100,"dfasdfsd");
        pDC->BitBlt(0,0,m_rectClient.Width(),m_rectClient.Height(),&m_MemDC,0,0,SRCCOPY);
    }

还添加个定时器,每一秒重画,怎么m_MemDC.TextOut();没有运行,没有显示出来。
搜索更多相关主题的帖子: BitBlt pDC 函数 memDC RGB 
2008-04-02 09:54
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
可能要m_MemDC.TextOut(100,100,_T("dfasdfsd"));

学习需要安静。。海盗要重新来过。。
2008-04-02 10:52
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
恩,估计你的memdc没有在构造函数中初始化,在执行程序时,memdc是随机值,因此m_MemDC.GetSafeHdc()返回的也不是空,因此没有执行下面else的语句,大概就这么多了,你调试一下看看就应该知道了

2008-04-02 11:38
yinlb1987
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-11-5
收藏
得分:0 
我知道什么原因了,因为每次都调用了m_MemDC.DeleteDC(),所以每次都是NULL的 ,TextOut()就不会执行了。
2008-04-03 09:32
快速回复:BitBlt()函数的讨论
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049719 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved