winmain窗口代码
#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); }