博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

苦丁茶

tomcent.cublog.cn
内存分配
画图函数:
void CMyDlg::OnPaint()
{
 if (IsIconic())
 {
  CPaintDC dc(this); // device context for painting
  SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  // Center icon in client rectangle
  int cxIcon = GetSystemMetrics(SM_CXICON);
  int cyIcon = GetSystemMetrics(SM_CYICON);
  CRect rect;
  GetClientRect(&rect);
  int x = (rect.Width() - cxIcon + 1) / 2;
  int y = (rect.Height() - cyIcon + 1) / 2;
  // Draw the icon
  dc.DrawIcon(x, y, m_hIcon);
 }
 else
 {
  CDialog::OnPaint();
 }
 CPen  hPen;
 CClientDC dc1(this);
 hPen.CreatePen(PS_SOLID,1,RGB(155,100,0));
 SelectObject(dc1,hPen);
 dc1.MoveTo(25,25);
 dc1.LineTo(300,25);
 dc1.MoveTo(25,25);
 dc1.LineTo(25,325);
 dc1.MoveTo(25,325);
 dc1.LineTo(300,325);
 dc1.MoveTo(300,325);
 dc1.LineTo(300,25);
 
 dc1.MoveTo(70,25);
 dc1.LineTo(70,325);
 dc1.MoveTo(105,25);
 dc1.LineTo(105,325);
    dc1.MoveTo(140,25);
 dc1.LineTo(140,325);
 CString str="fsaf";
 //TextOut(dc1,150,150,str,strlen(str));

 CBrush  hBru;
 
 hBru.CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,0));
 CClientDC  hdc(this);
 SelectObject(hdc,hPen);
 SelectObject(hdc,hBru);
 
 for(int i=0;i<300;i++)
 {
  CBrush  hBru;
     CPen  hPen;
 
      hPen.CreatePen(PS_SOLID,1,RGB(155,100,0));
     hBru.CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,0));
     CClientDC  hdc(this);
     SelectObject(hdc,hPen);
      SelectObject(hdc,hBru);
  
  
  str.Format("%d",block_number[i]);
  TextOut(dc1,45,27+i,str,strlen(str));
 
  str.Format("%d",Space[i]);
        TextOut(dc1,75,27+i,str,strlen(str));
  str.Format("%d",i);
  TextOut(dc1,115,27+i,str,strlen(str));
  
  
  
  if(Fen[i])
        hdc.Rectangle(140,25+i,300,Space[i]+25+i);
  hdc.MoveTo(25,Space[i]+25+i);
     hdc.LineTo(300,Space[i]+25+i);
  i=i+Space[i]-1;

}
}
 
回收函数:
void CMyDlg::OnOK()
{
 // TODO: Add your control notification handler code here
// int block;
 bool  f=true;
    UpdateData(true);
    int begin;
 int end;
 int swap;
    for(int i=0;i<300&&f;i++)
 {
 
    if(block_number[i]==m_H)
    {
    begin=i;
    end=Space[i]+i;
                swap=Space[i];
     f=false;
    }
    else
    {
    // i=i+Space[i];
    }
 
 }
    /*for(int j=i-1;j<Space[i-1]+i-1;j++)
 {
           Fen[j]=false;
    
 }*/
 //flag=true;
 if(i-1>0&&Fen[i-1-Space[i-1]]==false)
 {
  begin=i-1-Space[i-1];
  swap=swap+Space[i-1-Space[i-1]];
 }
 if(i<300&&Fen[i-1+Space[i-1]]==false)
 {
        end=i-1+Space[i-1];
  swap=swap+Space[i-1+Space[i-1]];
 }
 for(int j=begin;j<end;j++)
 {
       Space[j]=swap;
    block_number[j]=m_H;
       Fen[j]=false;
 }
   
 Invalidate();
}
 
 
分配函数:
void CMyDlg::OnFen()
{
 // TODO: Add your control notification handler code here
   
 UpdateData(true);
   
 bool  f=true;
 for(int i=0;i<300&&f;i++)
 {
  
  if(m_F<=Space[i]&&Fen[i]!=true)
  {
     f=false;
     for(int j=i+m_F;j<Space[i]+i;j++)
     {
      
      Space[j]=Space[i]-m_F;
      block_number[j]=block_number[i];
     }
     Count++;
     for(j=i;j<i+m_F;j++)
     {
       Space[j]=m_F;
       Fen[j]=true;
       block_number[j]=Count;
     }

   }
   else
   {
      i=i+Space[i]-1;
   }
  
 }
 Invalidate();
 
}
 
 

发表于: 2006-12-18,修改于: 2006-12-18 17:49,已浏览331次,有评论0条 推荐 投诉

给我留言
版权所有 ChinaUnix.net 页面生成时间:2.16585