zoukankan      html  css  js  c++  java
  • 字体颜色和字体样式的演示

    #include <windows.h>

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInst,
    LPSTR lpszCmdLine,
    int nCmdShow
    )
    {
    MSG Msg;
    HWND hwnd;
    WNDCLASS wndclass;
    char lpszClassName[] = "窗体";
    //是这个窗口的类名wndclass,不是窗口左上角的那个
    char lpszTitle[] = "My Window";
    HBRUSH hbrush;
    hbrush = CreateSolidBrush(RGB(0, 255, 0));//定义绿色画刷

    wndclass.style = 0;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = hbrush;
    //空值背景颜色,可用自定义画刷来调,绿色背景
    wndclass.hInstance = hInstance;
    wndclass.lpszClassName = lpszClassName;
    wndclass.lpszMenuName = NULL;

    if (!RegisterClass(&wndclass)) {
    MessageBeep(0);
    return 0;
    }

    hwnd = CreateWindow(
    lpszClassName,
    lpszTitle,
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
    );

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while (GetMessage(&Msg, NULL, 0, 0))
    {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
    }
    return Msg.wParam;
    }

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    //定义区
    HDC hdc;
    HFONT hF_black, hF_big; //定义两种字体
    PAINTSTRUCT ps;
    TEXTMETRIC tm;

    //定义6个字符数组
    char lpsz_1[] = "这是一个红色的,字体为SYSTEM_FONT的字体,红色代表未来。";
    char lpsz_2[] = "现在展示的是自定义字体,颜色为绿色,绿色代表生机勃勃。";
    char lpsz_3[] = "现在展示的是蓝色的粗体字,蓝色代表海洋与天空。";
    char lpsz_4[] = "当前字体为大号,斜体并带有下划线的文字。";
    char lpsz_5[] = "现在掌握了字体的操作了吗?";
    char lpsz_6[] = "祝你成功!";

    int X = 0, Y = 0;
    SIZE size; //定义一个SIZE类型的结构

    switch (message)
    {
    case WM_PAINT:
    hdc = BeginPaint(hwnd, &ps);
    SetTextColor(hdc, RGB(255, 0, 0));
    //设置文本颜色
    GetTextMetrics(hdc, &tm);
    //获取字体信息,返回到结构体变量tm中
    TextOut(hdc, X, Y, lpsz_1, strlen(lpsz_1));
    //输出文本信息 --- 》》》第一次输出
    Y = Y + tm.tmHeight + 100 * tm.tmExternalLeading;
    //获取下一次输入的Y坐标

    //创建一个自定义字体
    hF_black = CreateFont(
    20,
    0,
    0,
    0,
    FW_HEAVY,
    0,
    0,
    0,
    ANSI_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH | FF_DONTCARE,
    "粗体字"
    );

    SetTextColor(hdc, RGB(0, 255, 0)); //设置字体颜色
    SelectObject(hdc, hF_black); //将自定义字体选入设备环境中
    GetTextMetrics(hdc, &tm);//获取字体信息,写入tm结构中
    TextOut(hdc, X, Y, lpsz_2, strlen(lpsz_2));//输出文本,————》》第二次
    Y = Y + tm.tmHeight + 10 * tm.tmExternalLeading;//获取下一个文本输入的Y坐标

    GetTextExtentPoint32(hdc, lpsz_2, strlen(lpsz_2), &size);
    //获取自定义字符串宽度

    SetTextColor(hdc, RGB(0, 0, 255));//设置字体颜色
    TextOut(hdc, X, Y, lpsz_3, strlen(lpsz_3)); //第三次输出
    Y = Y + tm.tmHeight + 20 * tm.tmExternalLeading;

    //定义一个大字号的自定义字体
    hF_big = CreateFont(
    30,
    0,
    0,
    0,
    FW_NORMAL,
    1,
    1,
    0,
    ANSI_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH | FF_DONTCARE,
    "大号字"
    );

    SelectObject(hdc, hF_big);
    SetTextColor(hdc, RGB(155, 155, 155));
    Y = Y + tm.tmHeight + 20 * tm.tmExternalLeading;
    TextOut(hdc, X, Y, lpsz_4, strlen(lpsz_4)); //第四次输出

    SetTextColor(hdc, RGB(255, 0, 0));
    Y = Y + tm.tmHeight + 30 * tm.tmExternalLeading;
    TextOut(hdc, X, Y, lpsz_5, strlen(lpsz_5)); //第五次输出

    //让同一行继续输出文本
    GetTextExtentPoint32(hdc, lpsz_5, strlen(lpsz_5), &size);
    X = X + size.cx; // 获取初始X坐标,X时上一个串结尾的X坐标
    TextOut(hdc, X, Y, lpsz_6, strlen(lpsz_6));

    EndPaint(hwnd, &ps);
    DeleteObject(hF_black);
    DeleteObject(hF_big);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    //break很重要,没有的话窗口会址闪一下,因为直接执行完
    default:
    return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
    }

  • 相关阅读:
    Java常用类之【日期相关类】
    Java常用类之【Math类、Random类、System类、Runtime类】
    Java常用类之【字符串相关类型】
    Java常用类之【八种基本数据类型】
    打印杨辉三角--for循环
    Eclipse设置文字大小
    Eclipse之JSON导包
    Java中设计模式之工厂模式-4
    PC 微信页面倒计时代码 safari不兼容date的问题
    在apache中设置访问目录后进入的默认页面为index.php
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/13731762.html
Copyright © 2011-2022 走看看