2011-12-19 30 views
1

私は、http://msdn.microsoft.com/en-US/library/8w4fzfxf%28v=VS.80%29.aspxの命令を使用してmfcウィンドウに長方形を描こうとします。私が試してみたものの、Rectangleはウィンドウ全体の境界線に表示されます。関数OnDraw(CDC * pDC)の次のコードの問題は何ですか?ウィンドウ内の特定の座標を持つRectangleを描画するには何ができますか?MFCの長方形

CPen penBlack; 
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); 
CPen* pOldPen = pDC->SelectObject(&penBlack); 

CPoint pt(10, 10); 
CSize sz(100, 50); 
CRect myRect(pt, sz); 
GetClientRect(&myRect); 

pDC->Rectangle(&myRect); 
+4

なぜ['GetClientRect'](http://msdn.microsoft.com/en-us/library/hkzy4k3x(v=80).aspx)を呼びますか?この呼び出しは、以前に設定された座標を 'myRect'で上書きするように見えます。 – stakx

+0

あなたは正しいはずですが、指示に示唆されています。 – arjacsoh

+1

命令を正確にコピーしていません。パーツをランダムな順序でコピーして貼り付けただけです。クライアント矩形を取得した後、各方向に20ピクセルずつ縮小し、* that *矩形を描画します。 –

答えて

2

GetClientRectに電話をかけます。

この関数は、渡された矩形オブジェクトに書き込むため、呼び出し直前にptszを使用して呼び出し直前に設定した特定の座標を上書きします。

0

このサイトは、mfc Dialog-based-applicationで四角形を描くのに役立ちます。

http://cboard.cprogramming.com/windows-programming/37788-drawing-mfc.html

http://cboard.cprogramming.com/cplusplus-programming/102490-cplusplus-mfc-rectangle-class.html

)(GetClientRectを使用しないでください。それはあなたの前の座標を上書きします。

+0

これはすべて役に立ちません。回答は実際に質問された質問に答えるものであり、一般的な主題にランダムなリンクを提供するものではありません。 –

1

@stakxは、ウィンドウ全体のクライアント領域を取得するGetClientRectを削除し、独自の矩形を上書きすることを推奨しています。

命令に関しては、最初にクライアント領域全体を取得し、描画する長方形を縮小するために矩形を縮小します。したがって、GetClientRectが必要です。