0

私はこのコードに出くわしました:

//handler for context menu element; to move an element



void CRTS_SketcherView::OnElementMove()      
{     
      CClientDC aDC(this);
OnPrepareDC(&aDC);                      //Set up the device context
GetCursorPos(&m_CursorPos);             //Get cursor position in screen coords
ScreenToClient(&m_CursorPos);            //convert to client coords
aDC.DPtoLP(&m_CursorPos);           //Convert to logical

      // ...code to initialize the moving of a shape on screen


}

カーソルの画面座標は画面上の位置であり、クライアント座標はウィンドウの位置に関係なく、ウィンドウのクライアント領域の座標であることを知っています。では、デバイス座標とは何でしょう? 私が知っている唯一のことは、それらがピクセル単位であることですが、論理(クライアント)および画面座標にどのように接続されていますか?

4

1 に答える 1

-1

画面座標はデバイス座標であり、同じもの (描画先の物理デバイス) を表す 2 つの異なる方法にすぎません。

GDI はプリンター出力などに使用できますが、これに「画面座標」という用語を使用すると少し混乱します。技術的には、画面にも「デバイス」モニカを使用する必要がありますが、使用するデバイスが非常に一般的であるため、人々 (およびドキュメント) は独自の名前を付けています。

これらすべてを考える方法は、2 つの座標系があることを認識することです。1 つは固定 (デバイス システム) で、もう 1 つは相対 (クライアント システム) です。

于 2012-07-27T11:48:27.607 に答える