こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

TextOutについて

ウィンドウの雛形に、
case WM_PAINT:{
static int t;
PAINTSTRUCT ps;
char cbuf[100];
HDC hdc = BeginPaint( hWnd, &ps );
wsprintf( cbuf, _T("on WM_PAINT%d"),t);
TextOut(hdc,0,100,cbuf,sizeof(cbuf));
SetWindowText( hWnd, cbuf );
t++;
EndPaint( hWnd, &ps );

break;
}
として実行したところ、ウィンドウを任意のところに重ねて、移動すると、SetWindowはタイトルバーにちゃんとの値が表示されるのですが、TextOutのtは再描画されないのですが、通っているのに描画されないのはなぜでしょうか?

投稿日時 - 2009-12-12 16:31:30

QNo.5517080

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

何を思って、BeginPath、EndPath を使おうと思ったのか、理解出来ません。
説明できるでしょうか?

> もしかしてTextOut()ではできないということでしょうか?
えっと。何が理解出来ていて、何が理解出来てないのか、一度整理した方が良
いのではないでしょうか。

内容を理解しないまま、なんとなく、コーディングをして、理解しないまま放
置してある、様に感じます。

質問の内容が的を得ないのも、調べ方がトンチンカンなのも、このあたりが理
由ではないかと思います。

例えば、
使用する API のリファレンスページを確認しますよね。
そこで、「リージョン」とか「パス」とか、わからない単語が見つかると、
「リージョン」、「パス」の意味を調べるはずです。まさか知らないまま放置
して、API の説明を理解できるとは考えないでしょう。


Win32 API と GDI について、お勉強できそうなサイトを見つけました。
一度、お勉強しなおしてみてはいかがでしょう。

・標準 Windows API
http://wisdom.sakura.ne.jp/system/winapi/win32/index.html

投稿日時 - 2009-12-13 02:58:14

お礼

回答ありがとうございます。今そのサイトでお世話になっていてその描画領域のサイズまで進めたところです。このサイトを勉強すれば出きるようになるのでしょうか?

投稿日時 - 2009-12-13 03:46:15

ANo.3

> 回答有難うございます。今も調べてみているのですが、”テキスト出力する
> 領域を、更新が必要な領域としてマーク”検索などをかけてはみたのですが、
> 自分では調べることができませんでした。どういうことなのかさっぱりです
> ・・・何かヒントなどいただけないでしょうか?
いったいどこを探しているのだろう。

APIを使うなら、まずリファレンスページは目を通す事をお勧めします。

・BeginPaint
http://msdn.microsoft.com/ja-jp/library/cc428337.aspx

・EndPaint
http://msdn.microsoft.com/ja-jp/library/cc428553.aspx

・TextOut
http://msdn.microsoft.com/ja-jp/library/cc428775.aspx

投稿日時 - 2009-12-13 00:25:50

補足

もしかしてTextOut()ではできないということでしょうか?

投稿日時 - 2009-12-13 01:43:06

お礼

回答ありがとうございます。
リファレンスページを参考にしたのですが、
case WM_PAINT:{
static int t;
PAINTSTRUCT ps;
wchar_t cbuf[100];
HDC hdc = BeginPaint( hWnd, &ps );
BeginPath(hdc);
wsprintf( cbuf, _T("on WM_PAINT%d"),t);
TextOut(hdc,0,100,cbuf,sizeof(cbuf));
EndPath(hdc);
SetWindowText( hWnd, cbuf );
t++;
EndPaint( hWnd, &ps );
break;
}
とやっても今度は表示自体されませんでした。
なにがいけないのでしょうか?

投稿日時 - 2009-12-13 01:15:31

ANo.2

>>テキスト出力する領域を、更新が必要な領域としてマークしてみてはいかがですか。
>具体的にどうすればいいのでしょうか?よろしくお願いします。
調べれば、すぐにわかりそうな事ですが、調べてからの発言でしょうか?
どのような事を調べたのかは、伝わってきませんよ。

投稿日時 - 2009-12-12 23:51:32

お礼

回答有難うございます。今も調べてみているのですが、”テキスト出力する領域を、更新が必要な領域としてマーク”検索などをかけてはみたのですが、自分では調べることができませんでした。どういうことなのかさっぱりです・・・何かヒントなどいただけないでしょうか?

投稿日時 - 2009-12-12 23:56:42

ANo.1

BeginPaint, EndPaintで、更新リージョンのクリッピングが行われているんじゃないかな。
テキスト出力する領域を、更新が必要な領域としてマークしてみてはいかがですか。

あと、char、TCHAR、wchar_tが混合しているみたいです、調べて修正しましょう。

投稿日時 - 2009-12-12 18:15:35

お礼

回答ありがとうございます。
>テキスト出力する領域を、更新が必要な領域としてマークしてみてはいかがですか。
具体的にどうすればいいのでしょうか?よろしくお願いします。

投稿日時 - 2009-12-12 19:37:34