游戏开发—窗口创立

Posted on 2010-03-12 19:16  625747  阅读(296)  评论(0)    收藏  举报
代码
#include <windows.h>
#include
"Dib.h"
#include
"DibBMP.h"

CDib Back;
CDib Overdib;

const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HBITMAP hMayi;
HDC BackDC;
HBITMAP hBack;
switch(msg)
{
case WM_PAINT: //窗口绘制消息
HDC hDC; //定义绘图用的设备环境
PAINTSTRUCT ps; //定义绘图结构ps
hDC=BeginPaint(hwnd,&ps); //并获取绘图环境hDC

Back.LoadBMP (
"Sample.bmp");
Back.Show (hDC ,
0,0,640,480);
ReleaseDC(hwnd,hDC);
EndPaint(hwnd,
&ps); //结束绘图
break;


case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(
0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;

wc.cbSize
= sizeof(WNDCLASSEX);
wc.style
= 0;
wc.lpfnWndProc
= WndProc;
wc.cbClsExtra
= 0;
wc.cbWndExtra
= 0;
wc.hInstance
= hInstance;
wc.hIcon
= LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor
= LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground
= (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName
= NULL;
wc.lpszClassName
= g_szClassName;
wc.hIconSm
= LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&wc))
{
MessageBox(NULL,
"Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION
| MB_OK);
return 0;
}

hwnd
= CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"M",
WS_OVERLAPPEDWINDOW
| WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT,
640, 480,
NULL, NULL, hInstance, NULL);

if(hwnd == NULL)
{
MessageBox(NULL,
"Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION
| MB_OK);
return 0;
}

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(
&Msg);
DispatchMessage(
&Msg);
}
return Msg.wParam;
}