• 创建一个Windows窗体


    20140702加:

    WS_OVERLAPPEDWINDOW这个属性如果写成WS_OVERLAPPED,则窗口没有最大最小按钮以及左边的系统的菜单。

    vs2010下的代码提示快捷键:CTRL + J

    step:

    窗口类赋值(12个参数)

    注册窗口类

    创建窗口

    消息循环

     

    #include<Windows.h>
    #include<tchar.h>
    
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
        const TCHAR pClassName[] = _T("MyWindow");
        WNDCLASSEX wcex;
        wcex.cbSize = sizeof(WNDCLASSEX);
        wcex.cbClsExtra = 0;
        wcex.cbWndExtra = 0;
        wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
        wcex.hCursor = ::LoadCursor(NULL, IDC_ARROW);
        wcex.hIcon = ::LoadIcon(NULL, IDI_APPLICATION);
        wcex.hIconSm = ::LoadIcon(NULL, IDI_APPLICATION);
        wcex.hInstance = hInstance;
        wcex.lpfnWndProc = WindowProc;
        wcex.lpszClassName = pClassName;
        wcex.lpszMenuName = NULL;
        wcex.style = CS_HREDRAW | CS_VREDRAW;
        BOOL bRet = ::RegisterClassEx(&wcex);
        if(!bRet)
        {
            MessageBox(NULL, _T("提示"), _T("注册窗口类失败"), MB_OK);
            return FALSE;
        }
        HWND hWnd = ::CreateWindowEx(0, pClassName, _T("WinDemo"), WS_VISIBLE|WS_OVERLAPPEDWINDOW, 
                                    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
                                    NULL, NULL, hInstance, NULL);
        
        if(NULL == hWnd)
        {
            MessageBox(NULL, _T("提示"), _T("创建窗口失败!"), MB_OK);
            return FALSE;
        }
        ::ShowWindow(hWnd, SW_SHOW);
        ::UpdateWindow(hWnd);
    
        MSG msg;
        while(GetMessage(&msg, NULL, 0, 0))
        {
            ::TranslateMessage(&msg);
            ::DispatchMessage(&msg);
        }
        return TRUE;
    }
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch(uMsg)
        {
            case WM_CLOSE:
                ::DestroyWindow(hwnd);
                return 0;
            case WM_DESTROY:
                ::PostQuitMessage(0);
                return 0;
            default:
                break;
        }
        return ::DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
  • 相关阅读:
    C#日期加减
    c#的预编译指令
    IHttpModule与IHttpHandler的区别整理
    ASP.NET提供程序
    在所有页面共享通用行为
    5.Oracle中的数据表
    asp.net跳转页面的三种方法比较(转)
    C#实现经典排序算法
    ASP.NET用户登录模块代码
    http错误锦集
  • 原文地址:https://www.cnblogs.com/wenwujuncheng/p/3743988.html
Copyright © 2020-2023  润新知