MFCのダイアログ形式でTextOut関数は使えるでしょうか?

[戻る]
むせん 2002/12/24(火) 17:06:02
いつもお世話になっています。
一点疑問点がありますので質問します。

私は今、MFCのSDI形式でなくダイアログ形式を使っています。
TextOutを使うのが文字表示で最良の方法だと思うのですが、どの資料にもSDI形式の例ばかり
です。

SDI形式 void C**View::OnDraw(CDC* pDC)
ダイアログ形式 void C**Dlg::OnPaint()

ダイアログ形式でTextOut関数は使えないんでしょうか?
よきアドバイスお願いします。

環境 MFC Win98 VC++6.0

tib 2002/12/24(火) 17:52:07
>ダイアログ形式でTextOut関数は使えないんでしょうか?
使えます。

TextOut()は、CDCのメソッドとして実装されていますよね。で、Device Contextを取得す
るGetDC()はCWndのメソッドです。ダイアログ(CDialog)はCWndの派生クラスなので、ダイ
アログクラスでGetDC()が使えます。

渋木宏明(ひどり) [E-Mail] [HomePage] 2002/12/24(火) 17:54:52
>TextOutを使うのが文字表示で最良の方法だと思うのですが、

時と場合によりけりです。

ダイアログなら、スタティックコントロールを貼り付けて SetWindowText() するのでも
良いと思います。

>ダイアログ形式でTextOut関数は使えないんでしょうか?

使えますよ。

CDialog 派生クラスに、自分で WM_PATIN メッセージのハンドラを追加して、その中に
描画処理を記述します。

n [E-Mail] 2002/12/24(火) 17:56:09
使えます。
 void C**Dlg::OnPaint()
 {
  if ( IsIconic() ) {
   // ...
  }
  else {
   //CDialog::OnPaint(); <-これは消す

   CPaintDC dc( this );// C**View::OnDraw()のCDC* pDCの代わり

   int bkmode_prev = dc.SetBkMode( TRANSPARENT );
   BOOL b = dc.TextOut( 0, 0, CString( "TextOut()" ) );
   dc.SetBkMode( bkmode_prev );
  }
 }

むせん 2002/12/25(水) 10:41:35
[[解決]]
tibさん、渋木宏明(ひどり)さん、nさん、よきアドバイスありがとうございます。
今回は、渋木宏明(ひどり)さんから教えてもらいました「スタティックコントロールを貼り付け
て SetWindowText() する」で文字表示することにしました。
また臨機応変でTextOut関数をつかっていこうと思います。
今回はありがとうございました。
またよろしくお願いします。

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