画面の座標について

[戻る]
nagashima 2002/05/29(水) 22:34:57
nagashimaと申します。
Windows2000/VC++6.0/MFCで開発しています。
スクリーンやクライアント座標(ピクセル値)を相対座標?( 画面の左上隅(0,0)、画面の右
下隅(65535,65535))に変更するにはどのようにすれば良いでしょうか?
mouse_eventに関する質問で、相対座標のことが書かれていましたが、スクリーン座標から相対
座標の変換方法については、書かれていませんでした。
お分かりの方がいれば、ご教授お願いします。

PAI 2002/05/30(木) 09:59:04
ScreenToClient( HWND, LPPOINT );
ClientToScreen( HWND, LPPOINT );

あと適当に計算。

不良PG [E-Mail] 2002/05/30(木) 10:30:48
::GetSystemMetrics等でスクリーンサイズを取得する。

あとは、計算するだけです・・

みみみ 2002/05/30(木) 15:23:12
DCの操作だけならこんな風になります。

#define NORM_X (65535+1)
#define NORM_Y (65535+1)

void CMyView::OnDraw(CDC* pDC)//例CViewの子クラス
{
    RECT rect;
    GetClientRect( & rect );
    pDC->SetMapMode( MM_ANISOTROPIC );
    //pDC->SetWindowOrg( 0, 0 );
    pDC->SetWindowExt( NORM_X, NORM_Y);
    //pDC->SetViewportOrg( 0, 0 );
    pDC->SetViewportExt( rect.right, rect.bottom );

    pDC->MoveTo( 0, 0 );
    pDC->LineTo(NORM_X, NORM_Y);
    pDC->MoveTo( NORM_X, 0 );
    pDC->LineTo(0, NORM_Y);
}

古いスレッドには追加発言できません。