- 締切済み
BCC5.5.1とBCCFormを使い、ビットマップを表示するプログラムを書いたが、ビットマップが表示されません。
いつもお世話になっております。 小生、只今BCC5.5.1とBCCFormを使い、Win32APIを勉強しています。 今回、"猫でもわかるWindowsプログラミング第2版"の第9章を参考にビットマップを表示するプログラムを書き、 以下の手順で実行ファイルを作成、実行してみましたが、ビットマップが表示されません。 1.bcc32 -W source.cpp 2.brc32 Bitmap.rc source.exe 以下にソースを記述します。 source.cpp ※WndProc関数以外は猫でもわかると同じなので省略させていただきます。 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { HDC hdc, hdc_mem; PAINTSTRUCT ps; HBITMAP hBmp; BITMAP bmp_info; int w, h; switch(msg){ case WM_PAINT: hdc = BeginPaint(hWnd, &ps); hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(MYBMP)); GetObject(hBmp, (int)sizeof(BITMAP), &bmp_info); w = bmp_info.bmWidth; h = bmp_info.bmHeight; hdc_mem = CreateCompatibleDC(hdc); SelectObject(hdc_mem, hBmp); BitBlt(hdc, 0, 0, w, h, hdc_mem, 0, 0, SRCCOPY); DeleteDC(hdc_mem); DeleteObject(hBmp); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; } そしてリソーススクリプトです Bitmap.rc //----------------------------------------- // BCCForm Ver 2.41 // An Easy Resource Editor for BCC // Copyright (c) February 2002 by ysama //----------------------------------------- #include "ResBitmap.h" //-------------------------- // イメージ(MYBMP) //-------------------------- MYBMP BITMAP DISCARDABLE "C:\Documents and Settings\ShuNakagawa\My Documents\C\test.bmp" そしてリソースヘッダです(記述の無い箇所は省いています) ResBitmap.h //----------------------------------------- // BCCForm Ver 2.41 // Header File for Resource Script File // Copyright (c) February 2002 by ysama //----------------------------------------- //--------------------- // イメージリソース //--------------------- #define MYBMP 100
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- machongola
- ベストアンサー率60% (434/720)
こんばんは。 WM_PAINTを処理した後にDefWindowProc()が呼ばれていないからではないでしょうか。 WndProc()内の一番下、 return 0; となっている部分を、 return DefWindowProc(hWnd, msg, wp, lp); と、する事で改善しませんか。
補足
machongolaさん、ご回答頂き誠にありがとうございます。 ご指摘のとおり、return DefWindowProc(hWnd, msg, wp, lp); と記述しなおしましたが、やはりビットマップは表示されませんでした。。。 どうすればいいのか全くわかりません。。。 ご教授の方宜しくお願いします。