win32apiでbmpを表示する関数についてです
bmpを表示する関数と処理する関数を別々のファイルにしたいのですが、表示されません・・・。エラー、警告はありませんでした。VC++2008を使用しています。ソースは以下のようになっています。よろしくお願い致します。
~ 処理部分 load_bmp.cpp ~
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
extern HINSTANCE hinst;
extern HWND hwnd;
int Load_Bmp( HDC hdc, char *f_name_of_BMP)
{
HBITMAP hbmp;
HDC work_DC;
hbmp=(HBITMAP)LoadImage(hinst,_T ("f_name_of_BMP"),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE);
if( hbmp == NULL ){
MessageBox(hwnd, _T("ビットマップを表示できません"), _T("エラー"),MB_OK | MB_ICONWARNING);
return 0;
}
work_DC = CreateCompatibleDC( hdc );
SelectObject( work_DC, hbmp );
BitBlt(hdc,0,0,640,480,work_DC,0,0,SRCCOPY);
ReleaseDC( hwnd,work_DC );
DeleteObject( hbmp );
return 0;
}
~ヘッダファイル load_bmp.h ~
int Load_Bmp( HDC hdc,char *f_name_of_BMP);
~処理部分 main.cpp ~
#include <windows.h>
#include <tchar.h>
#include "load_bmp.h"
HWND hwnd;
HDC win_hdc;
HINSTANCE hinst; void init_game()
{
Load_Bmp( win_hdc,"test.bmp");
}
LRESULT WndProc(HWND hwnd,UINT msg,WPARAM wprm,LPARAM lprm)
{
switch(msg){
case WM_CREATE: break;
case WM_DESTROY: PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,msg,wprm,lprm);
}
return 0;
}
int APIENTRY WinMain(HINSTANCE hIns,HINSTANCE hPI,LPSTR lpArg,int nCmdShow)
{
MSG msg;
WNDCLASS wc;
hinst=hIns;
wc.hInstance=hIns;
wc.lpszClassName=_T("test");
wc.lpfnWndProc=(WNDPROC)WndProc; wc.style=0; wc.hIcon=LoadIcon((HINSTANCE)NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor((HINSTANCE)NULL,IDC_ARROW);
wc.lpszMenuName=0;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
if(RegisterClass(&wc)==0)return 0;
hwnd=CreateWindowEx(
0,
wc.lpszClassName, _T("test"),
WS_OVERLAPPEDWINDOW, 20,20,640,480,
NULL, NULL, hIns, NULL );
if(!hwnd)
return 0;
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
win_hdc=GetDC(hwnd);
init_game();
while(1){
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)){
(!GetMessage(&msg,(HWND)NULL,0,0));break; TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
お礼
ご返事が遅れてしまい、申し訳ございません。 ご指摘等々ありがとうございました。