2442|3

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

控件绘图下一屏显示问题 [复制链接]

我在用控件绘土时第一页很容易就显示出来了,可是下一页就不能绘制出来

请问各位是什么原因啊

最新回复

我的代码如下:,但一屏时能很正常的显示,到了第二屏就画不出来了 //用于刷新控件显示 void main::InvalidateCtrl() {    CPen *oldPen;         m_crBackColor=RGB(255,255,255); //控件背景色         m_crTextColor= RGB(122,122,122); //字体颜色         CPen solidPen(PS_SOLID,0,RGB(111,111,111));     CFont xFont,yFont,*oldFont;         CBrush brushBack;         brushBack.CreateSolidBrush(m_crBackColor);                 CRect rectClient;         GetClientRect(rectClient);         CClientDC dc(GetDlgItem(IDC_LIST2));                         CString str=_T("X坐标");                 //创建表格设备环境以及创建相应缓冲区 if (m_tmpDC.GetSafeHdc() == NULL)         {         m_tmpDC.CreateCompatibleDC(&dc);         m_tmpBmp.CreateCompatibleBitmap(&dc,rectClient.Width()+mm*60,rectClient.Height());         m_tmpDC.SelectObject(&m_tmpBmp);         }      //设置背景颜色         m_tmpDC.SetBkColor(m_crBackColor);         m_tmpDC.FillRect(rectClient,&brushBack);         //创建画线设备环境以及创建相应缓冲区         if (m_tmpDCBlock.GetSafeHdc() == NULL)         {         m_tmpDCBlock.CreateCompatibleDC(&dc) ;         m_tmpBmpBlock.CreateCompatibleBitmap(&dc, rectClient.Width()+mm*60, rectClient.Height()) ;         m_tmpDCBlock.SelectObject(&m_tmpBmpBlock) ;         }                 m_tmpDCBlock.SetBkColor (m_crBackColor) ;         m_tmpDCBlock.FillRect(rectClient, &brushBack);         CPen newPen(PS_SOLID,1.5,RGB(100,100,100));         //        CBrush newBrush(RGB(100,200,0));         CString emp;         pOldPen = m_tmpDCBlock.SelectObject(&newPen);          m_tmpDCBlock.MoveTo(22, 5);                    m_tmpDCBlock.LineTo(22, 210);                  m_tmpDCBlock.LineTo(635+mm*60,210);                  m_tmpDCBlock.SetTextColor(m_crTextColor);                  for(int i=1;i  详情 回复 发表于 2007-11-13 09:51
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
什么控件?
最好给出源代码,可以肯定是你的代码的问题。
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是不是把资源给释放了,仔细检查一下代码.
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
我的代码如下:,但一屏时能很正常的显示,到了第二屏就画不出来了
//用于刷新控件显示
void main::InvalidateCtrl()
{

   CPen *oldPen;
        m_crBackColor=RGB(255,255,255); //控件背景色
        m_crTextColor= RGB(122,122,122); //字体颜色
        CPen solidPen(PS_SOLID,0,RGB(111,111,111));
    CFont xFont,yFont,*oldFont;
        CBrush brushBack;
        brushBack.CreateSolidBrush(m_crBackColor);
       
        CRect rectClient;

        GetClientRect(rectClient);
        CClientDC dc(GetDlgItem(IDC_LIST2));
       
       
        CString str=_T("X坐标");
       
        //创建表格设备环境以及创建相应缓冲区
if (m_tmpDC.GetSafeHdc() == NULL)
        {
        m_tmpDC.CreateCompatibleDC(&dc);
        m_tmpBmp.CreateCompatibleBitmap(&dc,rectClient.Width()+mm*60,rectClient.Height());
        m_tmpDC.SelectObject(&m_tmpBmp);
        }

     //设置背景颜色
        m_tmpDC.SetBkColor(m_crBackColor);
        m_tmpDC.FillRect(rectClient,&brushBack);


        //创建画线设备环境以及创建相应缓冲区
        if (m_tmpDCBlock.GetSafeHdc() == NULL)
        {
        m_tmpDCBlock.CreateCompatibleDC(&dc) ;
        m_tmpBmpBlock.CreateCompatibleBitmap(&dc, rectClient.Width()+mm*60, rectClient.Height()) ;
        m_tmpDCBlock.SelectObject(&m_tmpBmpBlock) ;
        }
       
        m_tmpDCBlock.SetBkColor (m_crBackColor) ;
        m_tmpDCBlock.FillRect(rectClient, &brushBack);
        CPen newPen(PS_SOLID,1.5,RGB(100,100,100));
       
//        CBrush newBrush(RGB(100,200,0));
        CString emp;
        pOldPen = m_tmpDCBlock.SelectObject(&newPen);
         m_tmpDCBlock.MoveTo(22, 5);  
                 m_tmpDCBlock.LineTo(22, 210);
                 m_tmpDCBlock.LineTo(635+mm*60,210);
                 m_tmpDCBlock.SetTextColor(m_crTextColor);
                 for(int i=1;i<=10;i++)
                 {
                  m_tmpDCBlock.MoveTo(22, 20*i-5);
          m_tmpDCBlock.LineTo(27,20*i-5);
                  emp.Format(_T("%d"),i*10);
                  m_tmpDCBlock.ExtTextOut(1,210-20*i,ETO_CLIPPED,NULL,emp,wcslen(emp),NULL);
                 }
                 for(int j=1;j<=10+mm;j++)
                 {
           m_tmpDCBlock.MoveTo(22+60*j, 210);
           m_tmpDCBlock.LineTo(22+60*j,205);
                    emp.Format(_T("%d"),j*2);
                        emp=emp+" "+"M";
                   m_tmpDCBlock.ExtTextOut(10+60*j,211,ETO_CLIPPED,NULL,emp,wcslen(emp),NULL);

                 }
                 /* 画下面的那三条直线 */
       
    CPen newPen1(PS_SOLID,2,RGB(251,0,250));
        CPen newPenBlock(PS_SOLID,2,RGB(56,104,169));
        CPen newPenSample(PS_SOLID,2,RGB(136,253,57));

               pOldPen = m_tmpDCBlock.SelectObject(&newPen1);
                  m_tmpDCBlock.MoveTo(40, 230);
          m_tmpDCBlock.LineTo(80,230);
          m_tmpDCBlock.SelectObject(pOldPen);
                    m_tmpDCBlock.ExtTextOut(50,235,ETO_CLIPPED,NULL,_T("Lid"),3,NULL);

            pOldPenBlock = m_tmpDCBlock.SelectObject(&newPenBlock);
                   m_tmpDCBlock.MoveTo(90, 230);
           m_tmpDCBlock.LineTo(130,230);
                   m_tmpDCBlock.SelectObject(pOldPenBlock);
                    m_tmpDCBlock.ExtTextOut(100,235,ETO_CLIPPED,NULL,_T("Block"),5,NULL);

                   pOldPenBlock = m_tmpDCBlock.SelectObject(&newPenSample);
                   m_tmpDCBlock.MoveTo(140, 230);
           m_tmpDCBlock.LineTo(180,230);
                   m_tmpDCBlock.SelectObject(pOldPenSample);
                   m_tmpDCBlock.ExtTextOut(150,235,ETO_CLIPPED,NULL,_T("Sample"),6,NULL);

        m_tmpDCBlock.SelectObject(pOldPen );
        //        m_oldDCBlock.BitBlt(0, 0, rectClient.Width(), rectClient.Height(),
        //        &m_tmpDCBlock, 0, 0, SRCCOPY) ;
                newPen.DeleteObject();

        //删除创建的GDI对象
        solidPen.DeleteObject();
        newPen1.DeleteObject();
        newPenSample.DeleteObject();
        newPenBlock.DeleteObject();
    xFont.DeleteObject();
        yFont.DeleteObject();
        brushBack.DeleteObject();

}
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表