ビットマップ表示とSetTimer関数を同居させる方法
ビットマップ表示とSetTimer関数を同居させる方法
現在、vc++2005を使用して、簡易的なGUIアプリケーションを作成しようとしているのですが、自分では解決ができない問題が発生してしまったので、質問させていただきます。
それはビットマップ表示とSetTimer関数を同居させる方法についてです。
ビットマップを読み込んで表示させる機能を追加してから、SetTimer関数が反応しなくなってしまい困っています。
ちなみにビットマップ表示の機能を追加する前まではSetTimer関数が正常に機能していました。
ウィンドウのハンドルhWndが何か関係しているのかと思ったのですが、解決方法がわからず・・・・・・
ご存知の方がいらっしゃましたら御教授いただけると幸いです。
↓ ソースの一部です
case WM_CREATE:
//ビットマップファイル読み込み + 表示の準備
static HBITMAP hbitmap,prebitmap;
static HDC hDC, hcomDC;
hbitmap = (HBITMAP)LoadImage(NULL,_T("kouen.bmp"),IMAGE_BITMAP,0,0, LR_LOADFROMFILE);
if( hbitmap == NULL )
{
MessageBox(hWnd, _T("ビットマップのロードに失敗しました"), _T("エラー"),MB_OK | MB_ICONWARNING);
return 0;
}
hDC =GetDC(hWnd);
hcomDC =CreateCompatibleDC(hDC);
prebitmap= (HBITMAP)SelectObject(hcomDC,hbitmap);
(中略)
break;
case WM_LBUTTONDOWN:
//2連続のシングルクリック防止
EnableWindow(hWnd,FALSE);
SetTimer(hWnd, ID_TIMER1, 500, NULL); ← これが機能していない
(中略)
break;
case WM_PAINT:
BitBlt( hDC, 0, 0, 1024, 690, hcomDC, 0, 0, SRCCOPY );
break;
case WM_TIMER://機能しなくなってしまった部分
if(wParam==ID_TIMER1){
KillTimer(hWnd,ID_TIMER1);
EnableWindow(hWnd,TRUE);
}
お礼
お答え、ありがとうございます。 今回はBMPファイルのビット情報を元に ビットマップの形をしたリージョン作成が目的でした。 operator HBITMAP()は、関数などにお手軽にビットマップハンドルを受け渡すことができるんですよね。 僕の持ってる参考文献はWIN32APIで表示するものが多くて、 MFCでの組み方がどうすれいいのか悩んでいましたが、 GetBitmapBitsメソッドでビット情報をバッファに入れることができるのが分かったので、 一件落着しました。 いやあ、MFCの機能を使いこなせば、結構楽にできるものなんですね。 でも、覚えるのが大変です。 本当にありがとうございました。