青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

最近想在MFC中運(yùn)用D3D,直接來(lái)了就用的單文檔,結(jié)果調(diào)試半天還是坐標(biāo)不對(duì)~

鼠標(biāo)的位置就是y比畫的圖形要大,而且是越往右下角拉 y 距離相差就越大!!!

但是同樣的我用多文檔,還有對(duì)話框都沒(méi)有這種問(wèn)題,請(qǐng)高手賜教@謝謝@

 

為什么多文檔,Dialog都沒(méi)這問(wèn)題呢?
CODE:

// TestDSIView.cpp : CTestDSIView 類的實(shí)現(xiàn)
//

#include 
"stdafx.h"
#include 
"TestDSI.h"

#include 
"TestDSIDoc.h"
#include 
"TestDSIView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CTestDSIView
DWORD CTestDSIView::D3DFVF_CUSTOMVERTEX = (D3DFVF_XYZRHW|D3DFVF_DIFFUSE);
IMPLEMENT_DYNCREATE(CTestDSIView, CView)

BEGIN_MESSAGE_MAP(CTestDSIView, CView)
    
// 標(biāo)準(zhǔn)打印命令
    ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
    ON_WM_LBUTTONDOWN()
    ON_WM_LBUTTONUP()
    ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()

// CTestDSIView 構(gòu)造/析構(gòu)

CTestDSIView::CTestDSIView()
{
    
// TODO: 在此處添加構(gòu)造代碼
    m_pD3D = NULL;
    m_pd3dDevice 
= NULL;
    m_pVB 
= NULL;
    m_bEdit 
= false;
}


CTestDSIView::
~CTestDSIView()
{
    
this->Cleanup();
}


BOOL CTestDSIView::PreCreateWindow(CREATESTRUCT
& cs)
{
    
// TODO: 在此處通過(guò)修改 CREATESTRUCT cs 來(lái)修改窗口類或
    
// 樣式

    
return CView::PreCreateWindow(cs);
}


// CTestDSIView 繪制

void CTestDSIView::OnDraw(CDC* /*pDC*/)
{
    CTestDSIDoc
* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    
if (!pDoc)
        
return;

    
// TODO: 在此處為本機(jī)數(shù)據(jù)添加繪制代碼
    Render();
}



// CTestDSIView 打印

BOOL CTestDSIView::OnPreparePrinting(CPrintInfo
* pInfo)
{
    
// 默認(rèn)準(zhǔn)備
    return DoPreparePrinting(pInfo);
}


void CTestDSIView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
    
// TODO: 打印前添加額外的初始化
}


void CTestDSIView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
    
// TODO: 打印后添加清除過(guò)程
}



// CTestDSIView 診斷

#ifdef _DEBUG
void CTestDSIView::AssertValid() const
{
    CView::AssertValid();
}


void CTestDSIView::Dump(CDumpContext& dc) const
{
    CView::Dump(dc);
}


CTestDSIDoc
* CTestDSIView::GetDocument() const // 非調(diào)試版本是內(nèi)聯(lián)的
{
    ASSERT(m_pDocument
->IsKindOf(RUNTIME_CLASS(CTestDSIDoc)));
    
return (CTestDSIDoc*)m_pDocument;
}

#endif //_DEBUG

void CTestDSIView::OnInitialUpdate(void)
{
    CView::OnInitialUpdate();

    
this->InitD3D(m_hWnd);
    
//this->InitVB();
}


void CTestDSIView::OnLButtonDown(UINT nFlags, CPoint point)
{
    m_ptDown 
= point;
    m_bEdit 
= true;
    CView::OnLButtonDown(nFlags, point);
}


void CTestDSIView::OnLButtonUp(UINT nFlags, CPoint point)
{
    m_ptUp 
= point;
    m_bEdit 
= false;
    InitVB(m_ptDown.x, m_ptDown.y, point.x, point.y);
    Render();
    CView::OnLButtonUp(nFlags, point);
}


void CTestDSIView::OnMouseMove(UINT nFlags, CPoint point)
{
    
if (m_bEdit)
    
{
        m_ptMove 
= point;
        InitVB(m_ptDown.x, m_ptDown.y, point.x, point.y);
        Render();
    }

    CView::OnMouseMove(nFlags, point);
}



//////////////////////////////////////////////////////////////////////////
// d3d function
HRESULT CTestDSIView::InitD3D( HWND hWnd )
{
    
// Create the D3D object.
    if( NULL == ( m_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        
return E_FAIL;

    
// Set up the structure used to create the D3DDevice
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory( 
&d3dpp, sizeof(d3dpp) );
    d3dpp.Windowed 
= TRUE;
    d3dpp.SwapEffect 
= D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat 
= D3DFMT_UNKNOWN;

    
// Create the D3DDevice
    if( FAILED( m_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
        D3DCREATE_SOFTWARE_VERTEXPROCESSING,
        
&d3dpp, &m_pd3dDevice ) ) )
    
{
        
return E_FAIL;
    }


    
// Device state would normally be set here

    
return S_OK;
}


HRESULT CTestDSIView::InitVB(
int x1 /* = 0 */int y1 /* = 0 */int x2 /* = 0 */int y2 /* = 0 */)
{
    
// Initialize three vertices for rendering a triangle
    CUSTOMVERTEX vertices[] =
    

        
//{  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
        
//      { 50.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
        
//      { 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, },
        
//{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
        
//{50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },

        
{  x1, y2, 0.f, 0.0f0xff00ffff, },
        
{ x1,  y1, 0.f, 0.0f0xffff0000, }// x, y, z, rhw, color
        { x2, y1, 0.f, 0.0f0xff00ff00, },
        
{ x2, y2, 0.f, 0.0f0xff00ff00, },
        
{x1, y2, 0.f, 0.0f0xff00ffff, },

    }
;

    
// Create the vertex buffer. Here we are allocating enough memory
    
// (from the default pool) to hold all our 3 custom vertices. We also
    
// specify the FVF, so the vertex buffer knows what data it contains.
    if( FAILED( m_pd3dDevice->CreateVertexBuffer(5*sizeof(CUSTOMVERTEX),
        
0, D3DFVF_CUSTOMVERTEX,
        D3DPOOL_DEFAULT, 
&m_pVB, NULL ) ) )
    
{
        
return E_FAIL;
    }


    
// Now we fill the vertex buffer. To do this, we need to Lock() the VB to
    
// gain access to the vertices. This mechanism is required becuase vertex
    
// buffers may be in device memory.
    VOID* pVertices;
    
if( FAILED( m_pVB->Lock( 0sizeof(vertices), (void**)&pVertices, 0 ) ) )
        
return E_FAIL;
    memcpy( pVertices, vertices, 
sizeof(vertices) );
    m_pVB
->Unlock();

    
return S_OK;
}


VOID CTestDSIView::Cleanup()
{
    
if( m_pVB != NULL )        
        m_pVB
->Release();

    
if( m_pd3dDevice != NULL ) 
        m_pd3dDevice
->Release();

    
if( m_pD3D != NULL )       
        m_pD3D
->Release();
}


VOID CTestDSIView::Render()
{
    
// Clear the backbuffer to a blue color
    m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f0 );

    
// Begin the scene
    if( SUCCEEDED( m_pd3dDevice->BeginScene() ) )
    
{
        
// Draw the triangles in the vertex buffer. This is broken into a few
        
// steps. We are passing the vertices down a "stream", so first we need
        
// to specify the source of that stream, which is our vertex buffer. Then
        
// we need to let D3D know what vertex shader to use. Full, custom vertex
        
// shaders are an advanced topic, but in most cases the vertex shader is
        
// just the FVF, so that D3D knows what type of vertices we are dealing
        
// with. Finally, we call DrawPrimitive() which does the actual rendering
        
// of our geometry (in this case, just one triangle).
        m_pd3dDevice->SetStreamSource( 0, m_pVB, 0sizeof(CUSTOMVERTEX) );
        m_pd3dDevice
->SetFVF( D3DFVF_CUSTOMVERTEX );
        m_pd3dDevice
->DrawPrimitive( D3DPT_LINESTRIP, 04 );

        
// End the scene
        m_pd3dDevice->EndScene();
    }


    
// Present the backbuffer contents to the display
    m_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}

//////////////////////////////////////////////////////////////////////////
// CTestDSIView 消息處理程序

 

// TestDSIView.h : CTestDSIView 類的接口
//


#pragma once

#include 
<d3d9.h>
#include 
<d3dx9.h>
#pragma comment(lib, 
"d3d9.lib")
#pragma comment(lib, 
"d3dx9.lib")
#pragma comment(lib, 
"winmm.lib")
#pragma warning(disable : 
4244)

class CTestDSIView : public CView
{
protected// 僅從序列化創(chuàng)建
    CTestDSIView();
    DECLARE_DYNCREATE(CTestDSIView)

// 屬性
public:
    CTestDSIDoc
* GetDocument() const;

// 操作
public:

// 重寫
    public:
    
virtual void OnDraw(CDC* pDC);  // 重寫以繪制該視圖
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
    
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
    
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
    
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

//d3d member
private:
    LPDIRECT3D9                m_pD3D;
    LPDIRECT3DDEVICE9        m_pd3dDevice;
    LPDIRECT3DVERTEXBUFFER9    m_pVB;

    POINT m_ptDown;
    POINT m_ptUp;
    POINT m_ptMove;
    
bool  m_bEdit;
//d3d function member
protected:
    HRESULT InitD3D( HWND hWnd );
    HRESULT InitVB(
int x1 = 0int y1 = 0int x2 = 0int y2 = 0);
    VOID Cleanup();
    VOID Render();
    
    
struct CUSTOMVERTEX
    
{
        FLOAT x, y, z, rhw; 
// The transformed position for the vertex
        DWORD color;        // The vertex color
    }
;

    
// Our custom FVF, which describes our custom vertex structure
    static DWORD D3DFVF_CUSTOMVERTEX;
    
//#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
// 實(shí)現(xiàn)
public:
    
virtual ~CTestDSIView();
#ifdef _DEBUG
    
virtual void AssertValid() const;
    
virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// 生成的消息映射函數(shù)
protected:
    DECLARE_MESSAGE_MAP()
    afx_msg 
void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg 
void OnLButtonUp(UINT nFlags, CPoint point);
    afx_msg 
void OnMouseMove(UINT nFlags, CPoint point);
public:
    
virtual void OnInitialUpdate(void);
}
;

#ifndef _DEBUG  
// TestDSIView.cpp 的調(diào)試版本
inline CTestDSIDoc* CTestDSIView::GetDocument() const
   
return reinterpret_cast<CTestDSIDoc*>(m_pDocument); }
#endif


Feedback

# re: 為什么在MFC中的單文檔下用D3D畫圖坐標(biāo)不對(duì)盤!  回復(fù)  更多評(píng)論   

2008-09-17 13:34 by 小不點(diǎn)
請(qǐng)高手賜教嘍!!!!

# re: 為什么在MFC中的單文檔下用D3D畫圖坐標(biāo)不對(duì)盤!  回復(fù)  更多評(píng)論   

2008-09-19 16:50 by 匿名
我也遇到過(guò)這樣的問(wèn)題,創(chuàng)建的800*600的窗口,用getclientrect得到的矩形居然是950*666的,在view視圖中用directx也是短一塊,就相是說(shuō)我的鼠標(biāo)消息坐標(biāo)是800*600,但是view是950*666的,剛剛發(fā)現(xiàn)還沒(méi)仔細(xì)研究,不過(guò)這很可能是mfc的問(wèn)題

# re: 為什么在MFC中的單文檔下用D3D畫圖坐標(biāo)不對(duì)盤!  回復(fù)  更多評(píng)論   

2008-09-19 19:12 by 小不點(diǎn)
但是 多文檔的 只要視圖大小不改變 那么就沒(méi)有偏差,一旦視圖大小改變也就又偏差了,
單文檔 當(dāng)一開(kāi)始 創(chuàng)建,沒(méi)有添加多的東西的時(shí)候(比如左邊添加有樹控件對(duì)話框)那么就只有y坐標(biāo)又偏差,但是當(dāng)添加后x,y多有偏差了。
對(duì)話框 倒是還好~
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情在线免费观看| 亚洲精品资源| 久久久精品视频成人| 国产日韩欧美在线看| 亚洲国产精品传媒在线观看 | ●精品国产综合乱码久久久久 | 国内一区二区三区在线视频| 欧美在线视频一区二区| 午夜激情综合网| 伊人久久婷婷色综合98网| 欧美承认网站| 欧美视频在线视频| 久久久久久免费| 欧美精品成人91久久久久久久| 中文日韩欧美| 性欧美超级视频| 亚洲国产精品va在线观看黑人 | 久久成人免费视频| 蜜桃伊人久久| 欧美一区二区黄| 美日韩丰满少妇在线观看| 一区二区91| 久久九九国产| 亚洲一区二区三区中文字幕| 久久国产精品黑丝| 这里是久久伊人| 久久国产精品一区二区三区| 亚洲精品中文字幕有码专区| 亚洲影视在线| 一本色道久久综合一区| 欧美在线观看一区| 亚洲无人区一区| 久久一二三国产| 欧美在线观看视频一区二区三区| 理论片一区二区在线| 欧美一区二粉嫩精品国产一线天| 欧美成人激情在线| 久久久久久久波多野高潮日日| 欧美另类综合| 欧美成人精品高清在线播放| 国产精品入口日韩视频大尺度| 欧美国产精品久久| 黄色成人免费观看| 欧美一级午夜免费电影| 亚洲一区二区三区精品动漫| 欧美成人国产va精品日本一级| 久久久久久久久伊人| 国产精品久久久久av| 亚洲剧情一区二区| 亚洲另类视频| 欧美国产高清| 欧美激情视频一区二区三区在线播放| 国产精品网站视频| 亚洲一区二区三区涩| 亚洲图片在线观看| 欧美天天综合网| 亚洲最新在线| 亚洲综合欧美| 国产精品美女久久久| 亚洲婷婷国产精品电影人久久| 一本久道久久综合狠狠爱| 欧美成人亚洲| 亚洲国产日韩欧美在线图片| 最新国产精品拍自在线播放| 美女视频黄免费的久久| 牛牛精品成人免费视频| 亚洲国产精品一区二区尤物区| 久久久亚洲人| 久久九九电影| 欧美凹凸一区二区三区视频| 又紧又大又爽精品一区二区| 久久久久久九九九九| 老司机免费视频一区二区| 精品电影在线观看| 久久综合九色综合欧美就去吻| 免费观看在线综合色| 亚洲国产精品一区| 欧美日韩成人在线观看| 亚洲图片欧美日产| 久久国产精品一区二区三区| 精品不卡视频| 欧美激情一区二区三区不卡| 日韩一级网站| 久久九九有精品国产23| 亚洲国产成人精品久久久国产成人一区| 久久亚洲一区| 日韩视频一区二区三区在线播放免费观看| 亚洲图中文字幕| 国产伦精品一区二区三区高清版| 先锋影音久久| 欧美成人中文字幕| 亚洲一区久久久| 在线观看成人av电影| 欧美日本高清视频| 午夜久久黄色| 91久久久在线| 久久久久国产精品www | 国产精品成人一区二区三区夜夜夜 | 久久香蕉国产线看观看av| 亚洲人成77777在线观看网| 亚洲综合国产| 亚洲国产日韩在线一区模特| 欧美日韩亚洲综合一区| 欧美制服丝袜| 一个色综合导航| 欧美1区3d| 欧美一级艳片视频免费观看| 91久久夜色精品国产九色| 欧美视频一区二区三区…| 久久久亚洲国产天美传媒修理工| 日韩一级在线| 亚洲电影成人| 久久久亚洲国产天美传媒修理工| 一区二区三区视频在线看| 极品中文字幕一区| 国产精品中文字幕欧美| 欧美巨乳在线观看| 久久久综合香蕉尹人综合网| 亚洲午夜小视频| 亚洲精品系列| 亚洲国产导航| 男女av一区三区二区色多| 香蕉国产精品偷在线观看不卡| 最新成人av网站| 亚洲高清视频一区| 激情久久久久| 国产主播在线一区| 国产色综合网| 国产精品有限公司| 国产精品婷婷| 国产精品久久久久久久一区探花| 欧美精品不卡| 欧美日韩一区二区三区| 欧美精品一区二区三区一线天视频| 久久久噜噜噜| 亚洲福利视频一区二区| 国产无一区二区| 国产精品视频一区二区三区| 欧美色视频一区| 欧美午夜无遮挡| 欧美午夜免费影院| 欧美性大战久久久久| 欧美午夜一区二区福利视频| 欧美日韩精品在线视频| 欧美日韩天堂| 国产精品久久久久毛片大屁完整版| 欧美日韩免费观看中文| 欧美日韩在线三区| 国产精品亚洲精品| 国产视频丨精品|在线观看| 国产无一区二区| 影音先锋中文字幕一区二区| 在线国产欧美| 亚洲精品视频一区| 亚洲一二三级电影| 久久精品成人欧美大片古装| 久热精品视频| 亚洲黄一区二区三区| 99亚洲一区二区| 亚洲欧美精品suv| 久久久精品999| 欧美jizz19hd性欧美| 欧美日本不卡| 国产九色精品成人porny| 狠狠狠色丁香婷婷综合久久五月 | 国产免费观看久久| …久久精品99久久香蕉国产| 亚洲老司机av| 欧美一区免费视频| 亚洲高清不卡在线观看| 一区二区三区免费看| 久久免费视频这里只有精品| 欧美—级在线免费片| 国产精品一区免费在线观看| 在线成人激情| 亚洲免费影视| 欧美高清你懂得| 亚洲欧美日本伦理| 欧美大片免费久久精品三p| 国产精品综合久久久| 91久久久国产精品| 欧美制服丝袜第一页| 亚洲国产精品成人一区二区| 亚洲一区二区三区色| 欧美高清视频| 国产真实乱子伦精品视频| 中文欧美字幕免费| 欧美α欧美αv大片| 午夜欧美精品久久久久久久| 欧美精品亚洲精品| 精品不卡视频| 久久精品夜色噜噜亚洲a∨| 亚洲精品日韩综合观看成人91| 久久国产婷婷国产香蕉| 国产精品久久久久9999| 日韩香蕉视频| 欧美大片免费看| 久久se精品一区精品二区| 欧美天堂亚洲电影院在线播放 | 国产精品二区在线|