通过WinMain函数创建窗口

来源:互联网 发布:微店淘宝搬家助手 编辑:程序博客网 时间:2024/06/14 10:09
//WinMain 程序#include <windows.h>#include <stdio.h>/********************************************** *    窗口过程函数的声明 *    WinSunProc 是函数名 可以随便起 但要有意义 **********************************************/LRESULT CALLBACK WinSunProc(   HWND hwnd,     // 窗口句柄   UINT uMsg,     // 消息代码   WPARAM wParam, // 消息代码的两个附加参数   LPARAM lparam   );/***********************************************     WinMain 函数  主函数、入口函数     LP long point 长指针     窗口的创建过程:                1.设计一个窗口类                2.注册窗口类                3.创建窗口                4.显示及更新窗口***********************************************/int WINAPI WinMain(   HINSTANCE hInstance,       // 当前运行的实例句柄   HINSTANCE hPrevInstance,   // 当前实例的前一个实例句柄   LPSTR lpCmdLine,           // 以空终止的字符串   int nCmdShow               // 窗口显示 最大/小化 隐藏   ){    // 设计一个窗口类    WNDCLASS wndcls;          // WNDCLASS 是一个结构体 包含窗口的各项特征    wndcls.cbClsExtra = 0;    wndcls.cbWndExtra = 0;    wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   // 背景画刷句柄    wndcls.hCursor = LoadCursor(NULL , IDC_CROSS);                // 光标句柄    wndcls.hIcon = LoadIcon(NULL , IDI_ERROR);                    // 图标句柄    wndcls.hInstance = hInstance;                                 // 实例句柄    wndcls.lpfnWndProc = WinSunProc;                              // 指针函数 指向窗口过程函数    wndcls.lpszClassName = "xiaobei2017";                         // 窗口类的名字    wndcls.lpszMenuName = NULL;                                   // 菜单资源的名字    wndcls.style = CS_HREDRAW | CS_VREDRAW;                       // style指的窗口的样式    // 注册窗口类     RegisterClass(&wndcls);    // 创建窗口            /* CreateWindow函数用来创建窗口             * 第一个参数是窗口类的名字 跟上面要对应             * 第二个参数是窗口的名字             * 第三个参数是窗口的类型             * 第四五个参数是窗口左上角的坐标             * 第六七个参数是窗口的长和宽             * 第八个是副窗口句柄 只有一个窗口就设置成NULL             * 第九个是菜单句柄 没有菜单就设置成NULL             * 第十个是实例句柄 hInstance             * 第十一个参数暂时用不上 后面再介绍             */    HWND hwnd;    hwnd = CreateWindow("xiaobei2017","翼佳奕",            WS_OVERLAPPEDWINDOW,200,200,600,400,NULL,NULL,hInstance,NULL);    // 显示及刷新窗口            /* ShowWindow函数是用来显示窗口             * 第一个参数是窗口句柄             * 第二个参数是窗口的显示状态SW_SHOWNORMAL是激活窗口并显示             */    ShowWindow(hwnd , SW_SHOWNORMAL);    UpdateWindow (hwnd); // 更新窗口 参数是窗口句柄 (可有可无)    // 定义消息结构体 ,开始消息循环        // 消息循环就是不断地从消息队列中取出信息并响应            /* GetMessage函数就是从消息队列中取出信息             * 第一个参数是指向消息结构体             * 第二个参数指定接收哪个窗口的消息 通常默认为NULL             * 第三四个参数是获取消息的最小值和最大值 通常为0 接收所有消息             */        // TranslateMessage 函数是将虚拟键消息转换为字符消息        // DispatchMessage  是将消息回传给操作系统    MSG msg;    while(GetMessage(&msg,NULL,0,0))    {        TranslateMessage(&msg);        DispatchMessage(&msg);    }    return msg.wParam;}/********************************************** *    窗口过程函数 *    WinSunProc 是函数名 可以随便起 但要有意义 **********************************************/    LRESULT CALLBACK WinSunProc(       HWND hwnd,     // 窗口句柄       UINT uMsg,     // 消息代码       WPARAM wParam, // 消息代码的两个附加参数       LPARAM lparam       )    {        switch(uMsg)        {        case WM_CHAR:  // WM_CHAR            char szChar[20];            sprintf(szChar,"输入的字符是%d",wParam);            MessageBox(hwnd,szChar,"char",0);            break;                /* MessageBox 函数是用来弹出消息框                 * 第一个参数是当前窗口的窗口句柄                 * 第二个参数是消息显示的文本                 * 第三个参数是消息框的标题                 * 第四个参数是消息框的类型 0代表MB_OK 就是按键                 */        case WM_LBUTTONDOWN://鼠标左键按下的标志            MessageBox(hwnd,"mouse clicked","message",0);            HDC hdc;            hdc = GetDC(hwnd);            TextOut(hdc,0,30,"科技大学",strlen("科技大学"));            ReleaseDC(hwnd,hdc);            break;        case WM_PAINT:  //窗口重绘            HDC hDc;            PAINTSTRUCT ps;            hDc = BeginPaint(hwnd,&ps);            TextOut(hDc,0,0,"机械工程学院",strlen("机械工程学院"));            EndPaint(hwnd,&ps);            break;        case WM_CLOSE: // 窗口关闭            if (IDYES == MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))            {                DestroyWindow(hwnd);   // 销毁一个窗口            }            break;        case WM_DESTROY:            PostQuitMessage(0);            break;        default:            return DefWindowProc(hwnd,uMsg,wParam,lparam);          }        return 0;    }
0 0
原创粉丝点击