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 でコンパイル
するためにはどういうソースを書いたらいいか分からないし、
もっといい方法があれば教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

低レベルAPIで描画処理を行った場合は、WM_PAINT(再描画)が発生したタイミングで


再度描画処理する必要があります。
従って、WM_PAINTイベントのCase文を追加して描画処理をする事です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
WM_PAINTイベントのCase文でできました。

お礼日時:2001/09/05 23:55

ウインドウ再描画が必要になると、WM_PAINT メッセージが発生します。

ヘルプなどで確認してみてください。
WM_PAINTではBeginPaintとEndPaintを使ってください。HDCはGetDCではなく、BeginPaintで取得されたものを使用します。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2001/09/05 23:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報