一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

《基于MFC的OpenGL編程》Part 6 Keyboard and Mouse Control

 mtjs 2010-05-15


關(guān)鍵字: malloc wxWidgets OpenGL 多態(tài)性 doxygen

《基于MFC的OpenGL編程》Part 6 Keyboard and Mouse Control。

  在上一篇的基礎(chǔ)上加入對(duì)鍵盤和鼠標(biāo)的事件處理程序,以便用其來控制3D物體的旋轉(zhuǎn)和移動(dòng)。

  1,首先在CCY457OpenGLView類中為WM_KEYDOWN, WM_LBUTTONDOWN, WM_LBUTTONUP 和 WM_MOUSEMOVE四個(gè)事件加入事件處理函數(shù)。

  2,在CCY457OpenGLView.h中加入下列用于控制旋轉(zhuǎn)和移動(dòng)的變量:

  GLfloat m_xAngle;
  GLfloat m_yAngle;
  GLfloat m_xPos;
  GLfloat m_yPos;
  CPoint m_MouseDownPoint;

  并在構(gòu)造函數(shù)中初始化:

CCY457OpenGLView::CCY457OpenGLView()
{
  m_xPos = 0.0f;
  m_yPos = 0.0f;
  m_xAngle = 0.0f;
  m_yAngle = 0.0f;
}

  3,加入繪制代碼:

void COpenGLView::RenderScene ()
{
  glLoadIdentity();
  glTranslatef(m_xPos, m_yPos, -5.0f);
  glRotatef(m_xAngle, 1.0f,0.0f,0.0f);
  glRotatef(m_yAngle, 0.0f,1.0f,0.0f);
  
  glutWireCube(1.0f);
}

  4,為四個(gè)事件處理函數(shù)加入控制代碼

void COpenGLView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
  // TODO: Add your message handler code here and/or call default
  switch (nChar)
  {
    case VK_UP:    m_yPos = m_yPos + 0.1f;
            break;
    case VK_DOWN:  m_yPos = m_yPos - 0.1f;
            break;
    case VK_LEFT:  m_xPos = m_xPos - 0.1f;
            break;
    case VK_RIGHT: m_xPos = m_xPos + 0.1f;
            break;
    default:    MessageBox("Press the arrow keys only");
            break;
  }    
  
  InvalidateRect(NULL,FALSE);
  
  CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
  
void COpenGLView::OnLButtonDown(UINT nFlags, CPoint point)
{
  // TODO: Add your message handler code here and/or call default
  m_MouseDownPoint=point;
  SetCapture();
  
  CView::OnLButtonDown(nFlags, point);
}
  
void COpenGLView::OnLButtonUp(UINT nFlags, CPoint point)
{
  // TODO: Add your message handler code here and/or call default
  m_MouseDownPoint=CPoint(0,0);
  ReleaseCapture();
  
  CView::OnLButtonUp(nFlags, point);
}
  
void COpenGLView::OnMouseMove(UINT nFlags, CPoint point)
{
  // TODO: Add your message handler code here and/or call default
  // Check if we have captured the mouse
  if (GetCapture()==this)
  {
    //Increment the object rotation angles
    m_xAngle+=(point.y-m_MouseDownPoint.y)/3.6;
    m_yAngle+=(point.x-m_MouseDownPoint.x)/3.6;
    //Redraw the view
    InvalidateRect(NULL,FALSE);
    //Set the mouse point
    m_MouseDownPoint=point;
  };
  
  CView::OnMouseMove(nFlags, point);
}

來源:博客園    作者:Phinecos(洞庭散人)  


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日韩欧美亚洲综合在线| 青青操成人免费在线视频| 免费观看一区二区三区黄片| 极品少妇一区二区三区精品视频| 亚洲中文字幕一区三区| 国产级别精品一区二区视频| 国产精品午夜小视频观看| 久久91精品国产亚洲| 欧美性猛交内射老熟妇| 国内精品偷拍视频久久| 亚洲伦理中文字幕在线观看| 激情三级在线观看视频| 欧美小黄片在线一级观看| 免费在线成人午夜视频| 不卡视频免费一区二区三区| 人人妻人人澡人人夜夜| 日本欧美一区二区三区高清| 亚洲五月婷婷中文字幕| 亚洲一区二区三区有码| 丝袜诱惑一区二区三区| 一区二区三区亚洲国产| 丰满人妻少妇精品一区二区三区| 精品丝袜一区二区三区性色| 日韩和欧美的一区二区三区| 亚洲av成人一区二区三区在线| 殴美女美女大码性淫生活在线播放| 午夜国产成人福利视频| 精品欧美国产一二三区| 国产欧美性成人精品午夜| 日韩欧美国产高清在线| 色哟哟哟在线观看视频| 日韩人妻毛片中文字幕| 好吊妞在线免费观看视频| 东京不热免费观看日本| 亚洲日本韩国一区二区三区| 永久福利盒子日韩日韩| 亚洲a码一区二区三区| 亚洲成人免费天堂诱惑| 日韩精品一区二区三区含羞含羞草| 男人和女人干逼的视频| 国产精品一级香蕉一区|