在哪里修改字体的大小

在哪里修改字体的大小,我改了之后只有输入符变大

#include <windows.h>
#pragma comment(lib, "msimg32.lib")
#define BUFFER(x,y) * (pBuffer + y * cxBuffer + x)
//函数声明
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);//窗口处理函数
//变量定义
HWND hwnd;
HDC hdc, hdcmen;
BITMAP bm;
HBITMAP hbm;
PAINTSTRUCT ps;

//主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
    //设计窗口类
    WNDCLASS wndclass = {
        CS_HREDRAW | CS_VREDRAW,
        WndProc,
        0,
        0,
        hInstance,
        LoadIcon(NULL, IDI_APPLICATION),
        LoadCursor(NULL, IDC_ARROW),
        (HBRUSH)GetStockObject(WHITE_BRUSH),
        NULL,
        TEXT("MYDEMO")
    };
    //注册窗口类
    RegisterClass(&wndclass);
    //创建窗口类
    hwnd = CreateWindow(
        TEXT("MYDEMO"),
        TEXT("MyDemo"),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInstance,
        NULL);
    //显示窗口
    ShowWindow(hwnd, nCmdShow);
    //更新窗口
    UpdateWindow(hwnd);

    //消息循环
    MSG Msg;
    BOOL bRet;
    PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE);
    while (Msg.message != WM_QUIT)
    {
        bRet = PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE);
        if (bRet)
        {
            TranslateMessage(&Msg);
            DispatchMessage(&Msg);
        }

    }

    return Msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    /***
    * cxChar : 字体宽度  cyChar : 字体高度
    * cxClient : 客户区宽度   cyClient: 客户区高度
    * cxBuffer : 客户区每行最多输入的字符数 cyBuffer : 客户区最多输入字符的行数。
    * xCaret : 光标插入位置(每行的偏移量),yCaret:光标插入位置(列)
    ***/
    static int  cxChar, cyChar, cxClient, cyClient, cxBuffer, cyBuffer, xCaret, yCaret;
    static TCHAR* pBuffer = NULL;
    HDC hdc;
    int x, y, i;
    PAINTSTRUCT ps;
    TEXTMETRIC    tm;
    switch (message)
    {
    case WM_CREATE:
        hdc = GetDC(hWnd);
        GetTextMetrics(hdc, &tm);
        // 获取字体的平均宽度和高度
        cxChar = tm.tmAveCharWidth;
        cyChar = tm.tmHeight;
        ReleaseDC(hWnd, hdc);
        break;

    case WM_SETFOCUS:
        // 获得焦点的情况下,创建一个和字符宽度和高度相同的插入符。
        CreateCaret(hWnd, NULL, cxChar, cyChar);
        SetCaretPos(xCaret * cxChar, yCaret * cyChar);
        ShowCaret(hWnd);
        break;

    case WM_KILLFOCUS:
        HideCaret(hWnd);
        DestroyCaret();
        break;

    case WM_SIZE:
        // 获取客户区大小
        cxClient = LOWORD(lParam);
        cyClient = HIWORD(lParam);
        // 客户区每行最大字符个数,以及客户区最多的列数
        cxBuffer = max(1, cxClient / cxChar);
        cyBuffer = max(1, cyClient / cyChar);
        // 分配空间,并初始化
        if (pBuffer != NULL)
            free(pBuffer);
        pBuffer = (TCHAR*)malloc(cxBuffer * cyBuffer * sizeof(TCHAR));
        for (y = 0; y < cyBuffer; y++)
            for (x = 0; x < cxBuffer; x++)
                BUFFER(x, y) = ' ';

        xCaret = 0;
        yCaret = 0;
        if (hWnd == GetFocus())
        {
            SetCaretPos(xCaret * cxChar, yCaret * cyChar);
        }
        InvalidateRect(hWnd, NULL, TRUE);
        break;

    case WM_KEYDOWN:
        // 击键消息
        switch (wParam)
        {
        case VK_PRIOR:    // Page Up
            yCaret = 0;
            break;
        case VK_NEXT:    // Page Down
            yCaret = cyBuffer - 1;
            break;
        case VK_DELETE:    // delete键
            // 把光标之后的字符依次提前。
            for (x = xCaret; x < cxBuffer - 1; x++)
                BUFFER(x, yCaret) = BUFFER(x + 1, yCaret);
            BUFFER(cxBuffer - 1, yCaret) = ' ';

            HideCaret(hWnd);
            hdc = GetDC(hWnd);
            TextOut(hdc, xCaret * cxChar, yCaret * cyChar, &BUFFER(xCaret, yCaret), cxBuffer - xCaret);
            ReleaseDC(hWnd, hdc);
            ShowCaret(hWnd);
            break;
        }
        SetCaretPos(xCaret * cxChar, yCaret * cyChar);
        break;

        // 字符消息
    case WM_CHAR:
        for (i = 0; i < LOWORD(lParam); i++)
        {
            switch (wParam)
            {
            case '\b':    // backspace
                if (xCaret > 0)
                {
                    xCaret--;
                    SendMessage(hWnd, WM_KEYDOWN, VK_DELETE, 1);
                }
                break;

            case '\t':    // tab
                do
                {
                    SendMessage(hWnd, WM_CHAR, ' ', 1);
                } while (xCaret % 8 != 0);
                break;

            case '\n':    // 换行
                if (++yCaret == cyBuffer)
                    yCaret = 0;
                break;

            default:
                BUFFER(xCaret, yCaret) = (TCHAR)wParam;
                HideCaret(hWnd);
                hdc = GetDC(hWnd);
                TextOut(hdc, xCaret * cxChar, yCaret * cyChar, &BUFFER(xCaret, yCaret), 1);
                ReleaseDC(hWnd, hdc);
                ShowCaret(hWnd);
                if (++xCaret == cxBuffer)
                {
                    xCaret = 0;
                    if (++yCaret == cyBuffer)
                        yCaret = 0;
                }
                break;
            }
        }
        SetCaretPos(xCaret * cxChar, yCaret * cyChar);
        break;

    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        for (y = 0; y < cyBuffer; y++)
        {
            TextOut(hdc, 0, y * cyChar, &BUFFER(0, y), cxBuffer);
        }
        EndPaint(hWnd, &ps);
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}