#include<Windows.h>
#include<windowsx.h>
#include <mmSystem.h> 

//  创建一个基本的win32窗口

BOOL InitWindow(HINSTANCE hInstance, int nCmdshow);
LRESULT CALLBACK WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,              // 当前实例句柄
    HINSTANCE hPrevInstance,          // 前一个实例句柄
    PSTR szCmdLine,                   // 命令字符行
    int iCmdShow) {                   // 窗口显示方式
    MSG msg;

    //创建主窗口
    if (!InitWindow(hInstance, iCmdShow))
        return FALSE;

    //进入消息循环:从该应用的消息队列中捡取消息
    //送到消息处理过程,当捡取到WM_QUIT消息时,退出消息循环。
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}
static BOOL InitWindow                                    //创建窗口
(HINSTANCE hInstance, int iCmdShow) {
    static TCHAR szAppName[] = TEXT("My First Win");    // 应用程序名
    HWND hwnd;                                            // 窗口句柄
    WNDCLASS wc;                                        //窗口类结构


                                                        //填充窗口类结构
    wc.style = CS_VREDRAW | CS_HREDRAW;
    wc.lpfnWndProc = WinProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = GetStockBrush(WHITE_BRUSH);
    wc.lpszClassName = szAppName;
    wc.lpszMenuName = NULL;

    //注册窗口类
    if (!RegisterClass(&wc)) {
        MessageBox(NULL, TEXT("注册窗口类失败!"), szAppName, MB_ICONERROR);
        return 0;
    }

    //创建主窗口
    hwnd = CreateWindow(szAppName,                                        //  窗口类名称
        TEXT("一个基本的Win32程序"),                    //  窗口标题
        WS_OVERLAPPEDWINDOW,                            //    窗口风格
        100,                                            //    窗口位置坐标x
        100,                                            //    窗口位置坐标y
        400,                                            //    窗口宽度
        300,                                            //    窗口高度
        NULL,                                            //    父窗口句柄
        NULL,                                            //    菜单句柄
        hInstance,                                        //    应用程序实例句柄
        NULL);                                            //    窗口创建实例指针

    if (!hwnd) return FALSE;

    //    显示并更新窗口
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
    return    TRUE;
}


LRESULT CALLBACK WinProc         //处理主窗口信息
(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {

    HDC            hdc;
    PAINTSTRUCT ps;
    RECT        rect;

    switch (message) {
    case WM_CREATE:                    //创建信息
        PlaySound(TEXT("My First Win.wav"), NULL, SND_ASYNC | SND_FILENAME);
        return 0;

    case WM_KEYDOWN:                //击键消息
        switch (wParam)
        {
        case VK_ESCAPE:
            MessageBox(hWnd, TEXT("ESC键按下了!"), TEXT("键盘"), MB_OK);
            break;
        }
        return 0;

    case WM_RBUTTONDOWN:            //鼠标消息
        MessageBox(hWnd, TEXT("鼠标右键按下了!"), TEXT("鼠标"),
            MB_OK);
        return 0;

    case WM_PAINT:                                                    //窗口重画消息
        hdc = BeginPaint(hWnd, &ps);                                //取得设备环境句柄
        GetClientRect(hWnd, &rect);                                    //窗口客户区矩形
        SetTextColor(hdc, RGB(50, 50, 255));                            //设置文字颜色
        DrawText(hdc, TEXT("欢迎使用《Windows 环境与编程基础》"),
            -1, &rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER);                //输出文字
        EndPaint(hWnd, &ps);                                        //释放资源
        return 0;

    case WM_DESTROY:                //退出消息
        PostQuitMessage(0);            //调用退出函数
        return 0;

    }
    //调用缺省消息处理过程
    return DefWindowProc(hWnd, message, wParam, lParam);
}//函数WinProc结束

创建一个基本的win32窗口

相关文章:

  • 2021-11-27
  • 2021-11-29
  • 2021-08-29
  • 2021-07-22
  • 2021-03-30
  • 2021-07-09
  • 2021-12-30
  • 2021-11-26
猜你喜欢
  • 2021-12-16
  • 2021-06-29
  • 2021-12-06
  • 2021-10-19
  • 2021-11-03
  • 2021-10-01
  • 2018-09-02
相关资源
相似解决方案