第三课,我动起来了

加载图片

 

  
  
  
  
  1. BOOL getpic(CString cc,int p) //   加载图片函数 
  2. {   char name[256]; 
  3.     SetCurrentDirectory(appdir); 
  4.     sprintf(name,"%s%s/c%05d.bmp",dir,cc,p);                 //得到图片路径 
  5.     loadbmp(name);   
  6.     return TRUE; 
  7.  
  8. BOOL loadbmp(CString cc) 
  9. {   DeleteObject(bit); 
  10.     bit=(HBITMAP)LoadImage 
  11.                 (AfxGetInstanceHandle(), 
  12.                  cc,     
  13.                  IMAGE_BITMAP,   
  14.                  0,  
  15.                  0,  
  16.                  LR_LOADFROMFILE|LR_CREATEDIBSECTION 
  17.                 ); 
  18.     if(bit==NULL) return FALSE;  
  19.     DIBSECTION ds;           
  20.     BITMAPINFOHEADER &bm = ds.dsBmih; 
  21.     GetObject(bit,sizeof(ds),&ds); 
  22.     w = bm.biWidth;  
  23.     h = bm.biHeight; 
  24.     return TRUE; 

 

 

  
  
  
  
  1. MoveWindow(0,0,640,480);                  //设置窗口的位置,大小 
  2.     CenterWindow();                           //使窗口居中 
  3.  
  4. GetCurrentDirectory(256,appdir);                //得到当前的路径 
  5.     dir=appdir; 
  6.     if(dir.Right(8)=="运行程序")                   //加载地面的图片 
  7.             dir="图片/"
  8.     else                              
  9.         dir="../运行程序/图片/"
  10.  
  11.  
  12. void CMyDlg::OnPaint() 
  13.     if (IsIconic())              //该函数确定给定窗口是否是最小化(图标化)的窗口。  
  14.     { 
  15.         CPaintDC dc(this); // device context for painting 
  16.  
  17.         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 
  18.         //WM_ICONERASEBKGND发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画  
  19.         // Center icon in client rectangle 
  20.         int cxIcon = GetSystemMetrics(SM_CXICON); 
  21.         int cyIcon = GetSystemMetrics(SM_CYICON); 
  22.         CRect rect; 
  23.         GetClientRect(&rect); 
  24.         int x = (rect.Width() - cxIcon + 1) / 2; 
  25.         int y = (rect.Height() - cyIcon + 1) / 2; 
  26.  
  27.         // Draw the icon 
  28.         dc.DrawIcon(x, y, m_hIcon); 
  29.     } 
  30.     else 
  31.     { 
  32.         //CDialog::OnPaint(); 
  33.          
  34.     } 
  35.  
  36. void CMyDlg::OnOK()  
  37. {   GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);      //隐藏开头那个文本框 
  38.     CClientDC dc(this);  
  39.     GetWindowRect(rect);                      //得到窗口的的大小 
  40.     BitBlt(dc.m_hDC,0,0,rect.Width(),rect.Height(),MemDC,0,0,SRCCOPY);//显示图片,覆盖全窗口   
  41.  
  42.     SetTimer(1,150,NULL);             //设置定时器,定时加载图片,形成动画效果 
  43.  
  44.  
  45. void CMyDlg::OnTimer(UINT nIDEvent) 
  46. {   CClientDC dc(this); 
  47.     if(getpic("人",p)==FALSE)                       //回应定时器 
  48.             {AfxMessageBox(cc+"没找到!");return;} 
  49.     SelectObject(MemDC,bit); 
  50.     BitBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,SRCCOPY);  
  51.     p++;                                              
  52.     if(p>m1) p=m0; 
  53.     CDialog::OnTimer(nIDEvent); 

 

本文出自 “不曾远去” 博客,谢绝转载!

你可能感兴趣的:(游戏,职场,VC,休闲)