#include<Windows.h>
#include<windowsx.h>
#include <string.h>
#include <cstdio>
#include "enginApp.h"
//#include "resource.h"
using namespace std;
#define WCLASSNAME "WindowClassName"
#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
#define COLOR_BPP 32
HDC hdc;
PAINTSTRUCT scPaint;
LRESULT CALLBACK windowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASSEX windowClass;
HWND hwnd;
MSG msg;
ZeroMemory(&msg, sizeof(MSG));
//初始化窗口注册类
windowClass.cbSize=sizeof(WNDCLASSEX);
windowClass.style=CS_HREDRAW|CS_VREDRAW;
windowClass.lpfnWndProc=windowProc;
windowClass.cbClsExtra=0;
windowClass.cbWndExtra=0;
windowClass.hInstance=hInstance;
windowClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
windowClass.hCursor=LoadCursor(NULL,IDC_ARROW);
windowClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
windowClass.lpszClassName=WCLASSNAME;
windowClass.lpszMenuName=0;
windowClass.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
//windowClass.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(ICON_T3DX));
//windowClass.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(CURSOR_CROSSHAIR));
//注册窗口类
RegisterClassEx(&windowClass);
//创建窗口
hwnd=CreateWindowEx(NULL,WCLASSNAME,"Window Application",WS_OVERLAPPEDWINDOW|WS_VISIBLE,200,200,WINDOW_WIDTH,WINDOW_HEIGHT,NULL,NULL,hInstance,NULL);
if (!hwnd)
{
return 0;
}
//显示,更新窗口
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);
// load the menu resource
//HMENU hmenuhandle = LoadMenu(hInstance, "MainMenu");
// attach the menu to the window
//SetMenu(hwnd, hmenuhandle);
CEnginApp *enginApp=new CEnginApp(WINDOW_WIDTH,WINDOW_HEIGHT,COLOR_BPP,hwnd,true);
enginApp->Init();
while (true)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message==WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else
{
if(!enginApp->OnIdle())
DestroyWindow(hwnd);
//SendMessage(hwnd,WM_CLOSE,0,0);
Sleep(300);
}
}
enginApp->Release();
return msg.message;
}
LRESULT CALLBACK windowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
switch (msg)
{
case WM_MOVE:
{
//hdc=GetDC(hwnd);
//if (hdc)
//{
// int ix=LOWORD(lparam);
// int iy=HIWORD(lparam);
// char cTemp[128];
// sprintf_s(cTemp,"新位置:x=%d,y=%d",ix,iy);
// SetTextColor(hdc,RGB(0,0,255));
// SetBkColor(hdc,RGB(0,255,0));
// SetBkMode(hdc,OPAQUE);
// TextOut(hdc,0,20,cTemp,strlen(cTemp));
// ReleaseDC(hwnd,hdc);
//}
}
break;
case WM_PAINT:
{
//hdc=BeginPaint(hwnd,&scPaint);
//if (hdc)
//{
// SetTextColor(hdc,RGB(255,0,0));
// SetBkColor(hdc,RGB(0,255,0));
// SetBkMode(hdc,TRANSPARENT);
// TextOut(hdc,0,0,"Welcome!",8);
// EndPaint(hwnd,&scPaint);
// ReleaseDC(hwnd,hdc);
//}
}
break;
case WM_CLOSE:
{
if (MessageBox(0,"是否退出应用程序?","确认信息",MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON1)==IDYES)
{
DestroyWindow(hwnd);
}
}
break;
case WM_DESTROY:
{
PostQuitMessage(0);
}
break;
case WM_KEYUP:
{
if (wparam==VK_ESCAPE)
{
//PostQuitMessage(0);
DestroyWindow(hwnd);
}
}
break;
case WM_COMMAND:
{
switch (LOWORD(wparam))
{
//case MENU_FILE_ID_EXIT:
// {
// DestroyWindow(hwnd);
// }
// break;
}
}
break;
}
return DefWindowProc(hwnd,msg,wparam,lparam);
}