• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Shuffy

            不斷的學(xué)習(xí),不斷的思考,才能不斷的進(jìn)步.Let's do better together!
            posts - 102, comments - 43, trackbacks - 0, articles - 19
                    在上一篇的基礎(chǔ)上加入對(duì)鍵盤(pán)和鼠標(biāo)的事件處理程序,以便用其來(lái)控制3D物體的旋轉(zhuǎn)和移動(dòng)。

            1,首先在CCY457OpenGLView類(lèi)中為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);
            }

             

            作者:洞庭散人

            出處:http://phinecos.cnblogs.com/    

            本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
            原文鏈接:http://www.cnblogs.com/phinecos/archive/2008/11/05/1327443.html
            亚洲国产精品久久久久久| 亚洲精品蜜桃久久久久久| 久久亚洲春色中文字幕久久久| 国产精品免费久久久久久久久| 精品久久久久中文字幕日本| 午夜久久久久久禁播电影| 久久久久久精品无码人妻| 久久经典免费视频| 亚洲午夜无码久久久久| 亚洲AV日韩精品久久久久| 人妻无码中文久久久久专区| 久久99国内精品自在现线| 嫩草影院久久99| 久久精品国产99久久丝袜| 三级片免费观看久久| 狠狠色婷婷久久综合频道日韩 | 久久精品国产一区二区三区不卡 | 久久妇女高潮几次MBA| 色狠狠久久综合网| 少妇无套内谢久久久久| 日日躁夜夜躁狠狠久久AV| 国产精品久久网| 国产福利电影一区二区三区久久老子无码午夜伦不 | 99久久综合国产精品免费| 日韩精品久久无码人妻中文字幕| 少妇高潮惨叫久久久久久| 国产精品一久久香蕉国产线看| 国产精品久久久久…| 国产精品99久久久久久猫咪 | 久久99国产精品久久99| 久久久久亚洲av成人无码电影 | 欧美伊人久久大香线蕉综合| 久久精品一区二区三区AV| 1000部精品久久久久久久久| 国产免费久久精品99久久| 精品国产乱码久久久久软件| 久久久精品国产sm调教网站| 久久久久久久久久久免费精品| 伊人久久精品无码av一区| 国产AⅤ精品一区二区三区久久| 久久久久久综合网天天|