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);
}

 

posted @ 2012-07-28 10:59  冷夜 - 网游编程技术  阅读(1098)  评论(0编辑  收藏  举报