アプリ版:「スタンプのみでお礼する」機能のリリースについて

マッピングモードでつまづいてます。
SetMapMode(MM_LOENGLISH);
CRect rect;
GetClientRect(&rect);
pDC->Ellipse(0,0,rect.right,-rect.bottom);
とした場合、クライアント領域全体に楕円が表示されると思っていたのですが、右と下に余白があいてしまいます。
MM_TEXTだと思ったように表示されるのですが、MM_LOENGLISHだとGetClientRectでしっかりと領域を取得できていないようです。どうすればMM_LOENGLISHでしっかりとクライアント領域を取得できますか?
まだ、VCはじめたばかりで分からないことだらけです。
どうかよろしくお願いします。

A 回答 (1件)

DPtoLP()という物理座標から論理座標への変換関数があるのでGetClientRect()を呼んだ後に変換してあげれば良いと思います。


Ellipse()での描画時も符号変換は必要ないですね。

GetClientRect(&rect);
pDC->DPtoLP(&rect);
pDC->Ellipse(0,0,rect.right, rect.bottom);

マッピングモードはデバイスコンテキストの属性なのでデバイスコンテキストのハンドルを引数に取るような関数でしか有効になりません。
なので、マッピングモードが指定してあってもGetClientRect()は必ず物理座標(ピクセル単位)を返します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!