如何使用WIN32 API for C ++更改文本的颜色和大小?

格兰特·柯林斯

我一直在寻找问题的答案,但似乎找不到适合我的解决方案...可能是因为我可能认为这全错了。

我正在尝试创建一个基本的窗口,该窗口使用C ++中的WIN32 API以大红色字体弹出一串文本。

我曾尝试在WindowProcedure中使用WM_CTLCOLORSTATIC控件,但似乎无法使文本更改颜色。但是,我能够使用WM_CREATE创建文本,因此我对自己做错的事情感到困惑...

这是我到目前为止所写的。

#include <iostream>
#include <windows.h>

LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);

HWND textfield;
HDC hdc;

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR args, int nccmdshow) {

    WNDCLASSW wc = { 0 };

    wc.hbrBackground =  (HBRUSH)COLOR_WINDOW;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hInstance = hInst;
    wc.lpszClassName = L"myWindowClass";
    wc.lpfnWndProc = WindowProcedure;

    if (!RegisterClassW(&wc))
        return -1;

    CreateWindowW(L"myWindowClass", L"My Window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 500, 200, 1000, 500,
        NULL, NULL, NULL, NULL);

    MSG msg = {0};

    while (GetMessage(&msg, NULL, NULL, NULL)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;

}

LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {


    switch (msg) {
    case WM_CREATE:
        textfield = CreateWindow(L"STATIC", L"DEBOODAH!", WS_VISIBLE | WS_CHILD , 500, 100, 300, 25, hWnd, NULL, NULL, NULL);
        break;

    case WM_CTLCOLORSTATIC:

    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProcW(hWnd, msg, wp, lp);
    }

}

任何帮助将不胜感激!

塞瓦·阿列克谢耶夫(Seva Alekseyev)

WM_CTLCOLORSTATIC消息HDC在wParam中获取设备上下文句柄()。使用方法如下:

case WM_CTLCOLORSTATIC:
    SetTextColor((HDC)wp, RGB(255, 0, 0));
    return DefWindowProcW(hWnd, msg, wp, lp);

文字大小是一个完全不同的故事。创建静态窗口后,必须构造字体并将其提供给静态窗口:

case WM_CREATE:
    textfield = CreateWindow(/*...*/);
    HFONT hf = CreateFont(/*size=*/-12, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, L"MS Sans Serif");
    SendMessage(textfield, WM_SETFONT, (WPARAM)hf, 0);
    break;

也可以按照塞巴斯蒂安的建议画自己的文字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档