OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

リサイズで文字が消えちゃう

  • 暇なときにでも
  • 質問No.118766
  • 閲覧数86
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 59% (194/328)

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 HDC hdc;
 char *str;
 switch (msg) {
  case WM_KEYDOWN:
  hdc = GetDC(hWnd);
  str = "キーダウンした";
  TextOut(hdc,1,1,str,strlen(str));
  ReleaseDC(hWnd,hdc);
  break;

キーを押すと、LRESULT CALLBACK でウインドウに文字が
表示されるようにしました。
でも、この文字は別のウインドウに隠れて、再びウインドウが
表示された場合とかには消えています。
消えないようにするためにはどうしたらいいですか?

void Swit(HWND hWnd)
{
 HDC hdc;
 char *str;
 if (キーダウンのフラグがあったとして、それが true なら) {
  hdc = GetDC(hWnd);
  str = "キーダウンした";
  TextOut(hdc,1,1,str,strlen(str));
  ReleaseDC(hWnd,hdc);
 }
return;
}

if ( ウインドウ再描画 == true ){ Swit() }

というのを考えました。
LRESULT CALLBACK で、キーが押された場合にフラグを true にして
ウインドウが再描画された場合にフラグをチェックして文字を
表示する という方法を考えたんだけど、これを BCC32 でコンパイル
するためにはどういうソースを書いたらいいか分からないし、
もっといい方法があれば教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル7

ベストアンサー率 66% (6/9)

低レベルAPIで描画処理を行った場合は、WM_PAINT(再描画)が発生したタイミングで
再度描画処理する必要があります。
従って、WM_PAINTイベントのCase文を追加して描画処理をする事です。
お礼コメント
A__

お礼率 59% (194/328)

ありがとうございます。
WM_PAINTイベントのCase文でできました。
投稿日時 - 2001-09-05 23:55:41
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1

ウインドウ再描画が必要になると、WM_PAINT メッセージが発生します。ヘルプなどで確認してみてください。 WM_PAINTではBeginPaintとEndPaintを使ってください。HDCはGetDCではなく、BeginPaintで取得されたものを使用します。 ...続きを読む
ウインドウ再描画が必要になると、WM_PAINT メッセージが発生します。ヘルプなどで確認してみてください。
WM_PAINTではBeginPaintとEndPaintを使ってください。HDCはGetDCではなく、BeginPaintで取得されたものを使用します。
お礼コメント
A__

お礼率 59% (194/328)

ありがとうございました。
投稿日時 - 2001-09-05 23:55:40
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ