OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VCでの問題・・・

  • すぐに回答を!
  • 質問No.115275
  • 閲覧数318
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 50% (95/190)

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

質問者が選んだベストアンサー

  • 回答No.1
レベル8

ベストアンサー率 44% (11/25)

DPtoLP()という物理座標から論理座標への変換関数があるのでGetClientRect()を呼んだ後に変換してあげれば良いと思います。
Ellipse()での描画時も符号変換は必要ないですね。

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

マッピングモードはデバイスコンテキストの属性なのでデバイスコンテキストのハンドルを引数に取るような関数でしか有効になりません。
なので、マッピングモードが指定してあってもGetClientRect()は必ず物理座標(ピクセル単位)を返します。
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ