zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    微信小程序之自定义toast弹窗
    NPOI 设置导出的excel内容样式
    NPOI excel导出快速构建
    GridView 基本使用
    jqgrid 各种方法参数的使用
    经典SQL语句大全
    jqgrid 加载时第一页面只显示多少条数据
    sqlserver2008 调试存储过程
    jqgrid 上移下移单元格
    jgrid 选择器 C#控件
  • 原文地址:https://www.cnblogs.com/gamesky/p/2612911.html
Copyright © 2011-2022 走看看