アイコンの表示について

[戻る]
テン 2002/06/06(木) 14:40:34
テンです。
質門内容というのは アイコンの表示についてです。

リソースエディタでアイコンを作りました。
下記のソースのようにOnDrawの中で表示しています。
マップモードをMM_TEXT から MM_LOENGLISH に変更すると
pDC->SetMapMode(MM_LOENGLISH);
上下逆[対称]になりました。
マップモードが MM_LOENGLISH のときも正常に表示できるでしょうか?

初心者ですが、よろしくお願いします。

環境
VC6.0 SP5 MFC SDI CView
OS WIN XP

void CMyView::OnDraw(CDC* pDC)
{
 CMyDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: この場所にネイティブ データ用の描画コードを追加します。
 DC->SetMapMode(MM_LOENGLISH);
 HICON ICo8 = AfxGetApp()->LoadIcon(IDI_ICON_O8);
 CPoint p;
 p.x = 50;
 p.y = 50;
 pDC->DPtoLP(&p);
 pDC->DrawIcon(x, y, ICo8);
}

テン 2002/06/06(木) 15:58:07
すみません。コードにミスがありました。
最後の行
pDC->DrawIcon(x, y, ICo8);が
pDC->DrawIcon(p, ICo8);でした。m(__)m

dairygoods 2002/06/06(木) 16:29:45
DrawIconのヘルプには、
「この関数を使う前に必ず MM_TEXT マッピングモードを選択しておきます。」
と書いてありますので、
アイコン描画の時だけ一旦MM_TEXTにすればよいと思いますけど。

または、DrawIconExで、
DrawIconEx(pDC->m_hDC, p.x, p.y+32, ICo8, 32, -32, 0, NULL, DI_NORMAL);
のようにy座標の指定を逆にすることもできます。

テン 2002/06/06(木) 17:04:10
できました。(^_^)/
dairygoods 様 ありがとうございました。

テン 2002/06/06(木) 17:07:29
[[解決]]
チェックわすれました。
テン@あわてもの です。m(..)m

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