怎么用c语言写窗体程序

2024-12-05 02:39:19
推荐回答(1个)
回答1:

步骤:
1、注册窗口类;
2、创建窗体;
3、消息循环;
4、编写窗口消息处理函数。

代码:


#include 
#include
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI _tWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR szCmdLine, int nCmdShow)
{
    WNDCLASS wc;
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = NULL;
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = (HBRUSH)COLOR_WINDOW;//(HBRUSH)GetStockObject();
    wc.lpszMenuName = NULL;
    wc.lpszClassName = _T("MyWindowClass");
    if (!RegisterClass(&wc))
    {
        MessageBox (NULL, _T("无法注册窗口类"), _T("错误"), MB_OK);
        return 0 ;
    }
    HWND newWindow = CreateWindow(
                                        _T("MyWindowClass"),
                                        _T("我的第一个winapi程序"),
                                        WS_OVERLAPPEDWINDOW,
                                        0,
                                        0,
                                        CW_USEDEFAULT,
                                        CW_USEDEFAULT,
                                        NULL,
                                        NULL,
                                        hInstance,
                                        NULL
                                    );
    if (NULL == newWindow)
    {
        MessageBox (NULL, _T("无法创建窗体"), _T("错误"), MB_OK);
        return 0;
    }
    ShowWindow(newWindow, nCmdShow);
    UpdateWindow(newWindow);
    MSG msg;
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch (uMsg)
        {
            case WM_DESTROY:
            {
                PostQuitMessage(0);
                break;
            }
            default :
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
        return 0;
    }

   

就是一个只有标题栏、关闭按钮、最小化按钮、最大化/还原按钮、显示区域的窗体。