• Win32最简单的程序


    #include<tchar.h>
    #include<stdio.h>
    #include<windows.h>
    
    LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
    int WINAPI WinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPSTR lpCmdLine,
                       int nCmdShow)
    {
        WNDCLASS wndcls;
        wndcls.cbClsExtra = 0;
        wndcls.cbWndExtra = 0;
        wndcls.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
        wndcls.hCursor = LoadCursor(NULL,IDC_ARROW);
        wndcls.hIcon = LoadIcon(NULL,IDI_APPLICATION);
        wndcls.hInstance = hInstance;
        wndcls.lpfnWndProc = WinSunProc;
        wndcls.lpszClassName = _T("sunxin2006");
        wndcls.lpszMenuName = NULL;
        wndcls.style = CS_HREDRAW | CS_VREDRAW;
        RegisterClass(&wndcls);
    
        HWND hwnd = CreateWindow(_T("sunxin2006"),_T("helloworld"),WS_OVERLAPPEDWINDOW,
            0,0,600,400,NULL,NULL,hInstance,NULL);
        ShowWindow(hwnd,SW_SHOW);
        UpdateWindow(hwnd);
    
        MSG msg;
        while(GetMessage(&msg,NULL,0,0)>0)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
    
    VOID OnCreate(HWND hwnd,WPARAM wParam,LPARAM lParam)
    {
        int scrWidth,scrHeight;
        RECT rect;
        //获得屏幕尺寸
        scrWidth = GetSystemMetrics(SM_CXSCREEN);
        scrHeight = GetSystemMetrics(SM_CYSCREEN);
        //取得窗口尺寸
        GetWindowRect(hwnd,&rect);
        //重新设置rect里的值
        rect.left = (scrWidth-rect.right)/2;
        rect.top = (scrHeight-rect.bottom)/2;
        //移动窗口到指定的位置
        SetWindowPos(hwnd,HWND_TOP,rect.left,rect.top,rect.right,rect.bottom,SWP_SHOWWINDOW);
    }
    LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        switch(uMsg)
        {
        case WM_CHAR:
            char szChar[20];
            sprintf_s(szChar,_T("char code is %d(%c)"),wParam,(char)(wParam));
            MessageBox(hwnd,szChar,_T("char"),0);
            break;
        case WM_LBUTTONDOWN:
            MessageBox(hwnd,_T("mouse clicked"),_T("mouse"),0);
            HDC hdc;
            hdc = GetDC(hwnd);
            TextOut(hdc,0,50,_T("程序员之家"),_tcslen(_T("程序员之家")));        ReleaseDC(hwnd,hdc);
            break;
        case WM_CREATE:
            OnCreate(hwnd,wParam,lParam);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd,uMsg,wParam,lParam);
        }
        return 0;
    }

    注意:需要设置多字符集,不然编译无法通过。在项目出右击属性。常规->字符集->选择多字符集。

  • 相关阅读:
    vuex 按需动态引入等常用写法
    golang堆栈信息
    fiber框架
    leveldb查看工具
    golang sdk报错
    csdn复制问题
    golang panic打印
    unix socket 抓包
    dlv远程调试
    gitsubmodule使用
  • 原文地址:https://www.cnblogs.com/jlyg/p/8066467.html
Copyright © 2020-2023  润新知