論理単位の変換について

[戻る]
まつり 2004/11/23(火) 17:50:27
基本的な質問かもしれませんが、どうか教えてください。

VC++6.0を使っています。

CreateWindowEXを使ってコントロールを作成したり、Ellipse関数を使って円を描画した
りしています。

コントロールや描画した円を0.1ミリ単位の座標に変換したいのですが、SetMapModeを使
っても、コントロールは変換されず、円だけが変換されてしまいます。

本当に初歩的な質問で申し訳ないのですが、どうすれば変換できるのかがわからないの
で、宜しくお願いします。

K 2004/11/23(火) 23:09:53
画面表示ならこんなかんじ

CDC dc;
CSize size(100,100);
dc.CreateCompatibleDC(NULL);
dc.SetMapMode(MM_LOMETRIC);
dc.DPtoLP(&size);
***.MoveWindow(x, y, size.cx, size.cy);

K 2004/11/23(火) 23:27:42
dc.DPtoLP(&size); は
dc.LPtoDP(&size); の間違えでした
あと、最初の size.cy への論理座標の代入値はマイナスにしないといけないかも

まつり 2004/11/24(水) 16:03:58
[[解決]]
Kさん

返事が遅くなりました。
申し訳ありません。
明快なご回答をいただき、解決しました。

Kさんに書いていただいたコードをそのまま転用するのではなく、関数の1つ1つをラ
イブラリと照らし合わせながら、見ていったので、勉強にもなりました。

最後に、もう1つだけ質問させていただきたいのですが、VC++を学ぶ際によい参考
書があったら是非とも教えてください。

私は3冊の本を買って、問題にぶつかるたびに本にあたって調べているのですが、これら
の本はあまり網羅的でない感じがしています。

万能な本などないのかもしれませんが、多少難しくても、ある程度のことを網羅してい
るような本がありましたら、教えてください。

漠然とした質問で申し訳ありませんでした。

K 2004/11/25(木) 01:07:27
私の知ってる限りでは、
チップ集なら
 VisualC++5パワフルテクニック大全集
Win32システムのことなら
  Win32システムサービスプログラミング改訂版
が参考になりました。

ただ、この辺で自分のしたいことのサンプルを探すのが一番参考になると思います。
http://www.codeguru.com/Cpp/

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