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

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

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

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

 

為什么多文檔,Dialog都沒這問題呢?
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: 在此處通過修改 CREATESTRUCT cs 來修改窗口類或
    
// 樣式

    
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: 打印后添加清除過程
}



// 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 匿名
我也遇到過這樣的問題,創(chuàng)建的800*600的窗口,用getclientrect得到的矩形居然是950*666的,在view視圖中用directx也是短一塊,就相是說我的鼠標(biāo)消息坐標(biāo)是800*600,但是view是950*666的,剛剛發(fā)現(xiàn)還沒仔細(xì)研究,不過這很可能是mfc的問題

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

2008-09-19 19:12 by 小不點(diǎn)
但是 多文檔的 只要視圖大小不改變 那么就沒有偏差,一旦視圖大小改變也就又偏差了,
單文檔 當(dāng)一開始 創(chuàng)建,沒有添加多的東西的時(shí)候(比如左邊添加有樹控件對(duì)話框)那么就只有y坐標(biāo)又偏差,但是當(dāng)添加后x,y多有偏差了。
對(duì)話框 倒是還好~

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一本色道久久综合亚洲精品小说| 欧美夫妇交换俱乐部在线观看| 欧美日本久久| 韩国成人福利片在线播放| 在线亚洲免费视频| 欧美xx视频| 久久精品国产免费观看| 欧美性色视频在线| 亚洲精品日韩精品| 免费人成精品欧美精品| 欧美一区二区精品| 国产毛片一区二区| 亚洲一区日韩| 亚洲精品一区二区三区av| 久久综合给合| 伊人久久成人| 久久亚洲精品一区二区| 午夜国产不卡在线观看视频| 欧美性色综合| 一区二区三区欧美在线观看| 亚洲国产精品999| 久久精品国产在热久久 | 国产精品一区二区三区久久久 | 免费观看成人鲁鲁鲁鲁鲁视频| 国产三级欧美三级| 欧美亚洲一区二区在线观看| 一区二区免费看| 欧美日韩日本视频| 宅男噜噜噜66国产日韩在线观看| 亚洲激情在线| 欧美日韩国产精品一卡| 99riav1国产精品视频| 亚洲国产另类久久久精品极度| 另类亚洲自拍| 亚洲精品1234| 亚洲人成免费| 欧美日韩国产一区| 在线中文字幕一区| 99热这里只有精品8| 国产精品h在线观看| 亚洲一区美女视频在线观看免费| 一本色道久久综合亚洲二区三区| 国产精品电影在线观看| 亚洲欧美国产三级| 亚洲免费在线观看视频| 国产精品资源| 久久综合激情| 牛牛影视久久网| 亚洲伦理自拍| 99综合精品| 国产精品久久久久久久久久久久久久| 亚洲欧美高清| 欧美一区二区三区四区在线观看| 狠狠久久亚洲欧美| 欧美激情亚洲视频| 欧美日韩国产成人精品| 亚洲欧美日韩人成在线播放| 欧美一级欧美一级在线播放| 精品88久久久久88久久久| 欧美国产一区二区三区激情无套| 麻豆精品在线播放| 一区二区三区成人精品| 亚洲性图久久| 很黄很黄激情成人| 欧美激情一二三区| 欧美性淫爽ww久久久久无| 欧美在线看片| 麻豆国产精品777777在线| 一区二区三区高清在线观看| 一本综合久久| 欧美日韩精品久久久| 国产精品女主播| 在线日韩成人| 亚洲在线日韩| 性8sex亚洲区入口| 亚洲第一色中文字幕| 亚洲日本黄色| 国产精品日本| 牛牛精品成人免费视频| 欧美精品在线视频| 久久精品国产999大香线蕉| 久久亚洲图片| 亚洲欧美激情精品一区二区| 久久精品国产91精品亚洲| 日韩亚洲精品视频| 香蕉久久国产| 亚洲精品一区二区三区福利| 亚洲主播在线播放| 亚洲国产精品久久人人爱蜜臀| 亚洲看片免费| 一区二区三区在线视频免费观看| 亚洲日产国产精品| 国产一区观看| 日韩午夜在线观看视频| 国产揄拍国内精品对白| 亚洲精品免费网站| 黑人操亚洲美女惩罚| 99国产精品国产精品久久| 精品91视频| 中国女人久久久| 亚洲人人精品| 欧美中文字幕视频在线观看| 一本色道久久综合亚洲精品婷婷| 欧美一区二区三区喷汁尤物| 国产精品成人一区二区三区夜夜夜| 久久久久中文| 国产精品久久二区二区| 欧美成人在线影院| 国产偷国产偷精品高清尤物| 亚洲日本视频| 在线精品国产成人综合| 亚洲一区高清| 99re6这里只有精品视频在线观看| 欧美一区二区三区另类 | 国产日韩欧美自拍| 日韩视频第一页| 亚洲国产精品久久人人爱蜜臀| 亚洲男人的天堂在线aⅴ视频| 99热这里只有成人精品国产| 久久九九免费| 欧美专区在线| 欧美日韩在线视频观看| 亚洲国产精选| 亚洲电影在线播放| 欧美一二三视频| 亚洲欧美日本精品| 欧美日本在线观看| 亚洲成色最大综合在线| 国模大胆一区二区三区| 亚洲中字黄色| 亚洲自拍偷拍一区| 欧美日韩精品在线播放| 国产精品国产三级国产专播精品人 | 夜夜躁日日躁狠狠久久88av| 亚洲激情综合| 久久人人爽爽爽人久久久| 久久久精品国产一区二区三区| 国产精品久在线观看| 99ri日韩精品视频| 9人人澡人人爽人人精品| 欧美gay视频激情| 欧美成人a∨高清免费观看| 在线观看日韩av电影| 久久精品亚洲精品国产欧美kt∨| 欧美淫片网站| 国产欧美综合在线| 亚洲欧美综合另类中字| 性视频1819p久久| 国产精品毛片a∨一区二区三区|国| 99精品欧美一区二区三区综合在线| 一本色道久久综合狠狠躁篇的优点| 欧美国产一区二区| 亚洲国产精品传媒在线观看| 亚洲精品中文字幕在线| 欧美精品三级在线观看| 亚洲精品久久久久久久久久久| 99国产精品久久久久久久久久 | 亚洲黄网站黄| 99精品热视频| 欧美三级网址| 亚洲一级黄色片| 欧美一区二区三区久久精品| 国产精品一二一区| 性感少妇一区| 久久在线免费观看视频| 亚洲大片精品永久免费| 欧美aaa级| 亚洲精品一区久久久久久| 亚洲少妇一区| 国产精品任我爽爆在线播放 | 99精品视频一区二区三区| 欧美三级欧美一级| 亚洲欧美日本视频在线观看| 久久精品一本| 亚洲国产三级| 欧美日韩精品是欧美日韩精品| 99re66热这里只有精品4| 亚洲欧美电影院| 好吊色欧美一区二区三区四区| 久久免费黄色| 亚洲精品国产精品乱码不99| 亚洲一区二区三区国产| 国产免费成人在线视频| 久久九九久精品国产免费直播| 亚洲福利专区| 亚洲午夜一级| 国产欧美日韩伦理| 另类激情亚洲| 一本色道久久综合亚洲精品按摩| 欧美人牲a欧美精品| 亚洲午夜视频| 玖玖综合伊人| 一本色道久久综合亚洲精品不卡 | 欧美午夜精品久久久久久浪潮 | 亚洲自拍三区| 女同性一区二区三区人了人一 | 久久久久看片| 亚洲精品欧洲| 久久久精品视频成人| 亚洲精品乱码久久久久久|