No.2ベストアンサー
- 回答日時:
>hdc = BeginPaint(hWnd, &paint);
と、
>EndPaint(hWnd, &paint);
これはWM_PAINTの中でしか使用できません。
WM_MOVEで描画を行うのでしたらGetDC()、ReleaseDC()を使用してください。
No.3
- 回答日時:
ちょっと補足
>WM_PAINTはウインドウの形変わった
ウィンドウの形が変わった際はWM_SIZEです。
WM_PAINTは描画が必要なときです。
変わった結果、描画が必要な範囲が発生することでWM_PAINTが投げられます。
ウィンドウクラスの登録で、CS_VREDRAWやCS_HREDRAWを指定していない場合、サイズ変更ではWM_PAINTは発生しない場合もあります。
他のアプリのウィンドウを重ねて動かす等でもWM_PAINTは投げられますよ。描画しなおさないといけなくなるからです。
No.1
- 回答日時:
具体的にどうやってWM_MOVEのタイミングで描画してるか不明なのでわかりません。
ちゃんと処理組んでれば描画できるはずです、としかいえません。
この回答への補足
ウインドウクラスの定義のlpfnWndProcに定義した関数内で、メッセージ?を拾って、WM_PAINTとWM_MOVEを同じ扱いにしてみましたが、ウインドウ移動した時には書き換わりません。My_textout関数内でMessageBox()で座標表示は出来たので、関数に飛んでくるし、値も得てはいるのですが、表示が変わりません。
×ボタンで終了が出来るので、この中に入ってくるのは確かのようです。
WM_PAINTはウインドウの形変わった
WM_MOVEはウインドウ動いた
と解釈しています。
[lpfnWndProcに定義した関数]
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT:
case WM_MOVE:
My_textout(hWnd);
break;
default:
return(DefWindowProc(hWnd, msg, wParam,lParam));
}
return (0L);
}
[表示する関数]
void My_textout(HWND hWnd)
{
HDC hdc;
char strx[256],strx2[256];
PAINTSTRUCT paint;
RECT rt,rt2;
LPCSTR str;
GetClientRect(hWnd, &rt);
GetWindowRect(hWnd, &rt2);
wsprintf((LPSTR)strx, (LPCSTR)"相対=[left=%d top=%d right=%d bottom=%d]"
,rt.left
,rt.top
,rt.right
,rt.bottom);
wsprintf((LPSTR)strx2, (LPCSTR)"絶対=[left=%d top=%d right=%d bottom=%d]"
,rt2.left
,rt2.top
,rt2.right
,rt2.bottom);
hdc = BeginPaint(hWnd, &paint);
SetTextColor(hdc, RGB(0, 0, 255));
TextOut(hdc, 10, 10, (LPSTR)strx, strlen(strx));
SetTextColor(hdc, RGB(255, 0, 0));
TextOut(hdc, 10, 30, (LPSTR)strx2, strlen(strx2));
EndPaint(hWnd, &paint);
return;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
word
-
VB6,リストボックスの特定行の...
-
ビットマップを表示させる(MFC)
-
移動する線を描画したい(何と...
-
NVIDIAのシェーダーキャッシュ
-
C++, MFCにてゲームプログラミング
-
VBAにGDI+を参照させる方法
-
TextBoxに文字を書いても表示さ...
-
逐次的なグラフ表示の方法
-
[VB.net] DataGridViewの列ヘッ...
-
OnDrawが呼び出されません
-
クライアント領域のコントロー...
-
Labelの文字をスクロールする際...
-
ウインドウサイズを変更しても...
-
UpdateData( FALSE); による文...
-
VB.netでのライン描画方法がわ...
-
Delphiでキューを作りたい
-
MFCでOnPaintのタイミング
-
CScrollViewの使用方法について
-
panelのスクロール表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
word
-
NVIDIAのシェーダーキャッシュ
-
MFCでOnPaintのタイミング
-
Minecraft 統合版(PC)の描画距...
-
google Colabでmatplotlibの描...
-
TextBoxに文字を書いても表示さ...
-
[VB.net] DataGridViewの列ヘッ...
-
UpdateData( FALSE); による文...
-
OneNote 2010 文字と描画がずれる
-
Labelの文字をスクロールする際...
-
InvalidateRectの使い方について
-
VB.netでのライン描画方法がわ...
-
CStaticコントロールの静的イメ...
-
VC++プログラムをつかったBMP画...
-
WM_SIZEとWM_SIZINGの違い (Win...
-
エクセルでガンチャートを作成...
-
c言語を使いダイアログにbmpを...
-
WM_PAINT
-
MFCのタイマーのつかい方を教え...
おすすめ情報