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);
    }
  • 相关阅读:
    MobileIMSDK连接后频繁掉线重连,提示会话超时失效,对方非正常退出或网络故障
    Android+SpringBoot+Vue+高德地图实现后台查看车辆实时位置功能
    Vue中集成高德地图API实现定位与自定义样式信息窗体
    Java中对接钉钉API获取数据流程
    Java中集成极光推送实现给Android提送消息通知(附代码下载)
    Android中集成极光推送实现推送消息通知与根据别名指定推送附示例代码下载
    PostGresSQL简介与Windows上的安装教程
    信息系统项目管理师-知识产权、项目收尾、标准规范核心知识点思维脑图
    信息系统项目管理师-项目成熟度模型、量化项目管理核心知识点思维脑图
    信息系统项目管理师-招投标法、政府采购法核心知识点思维脑图
  • 原文地址:https://www.cnblogs.com/gamesky/p/2612911.html
Copyright © 2011-2022 走看看