如何使用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条评论
登录后参与评论

相关文章

来自分类Dev

如何禁用按钮-Win32 API

来自分类Dev

使用C ++ Win32 GUI在窗口中显示文本

来自分类Dev

使用Win32 / C ++ API更改Windows 7墙纸(未实现操作异常)

来自分类Dev

如何使用Win32 API获取任何线程的堆栈大小和堆栈限制

来自分类Dev

GetGuiResources WIn32 API使用

来自分类Dev

如何更改Android中弹出菜单的文本颜色和大小?

来自分类Dev

检查是否正在使用Win32 API或C / C ++写入文件。我本人没有写权限

来自分类Dev

Win32 API:如何在编辑控件中更改部分文本的颜色

来自分类Dev

Poco C ++库和Win32 GUI集成

来自分类Dev

C ++ Win32 Api资源文件

来自分类Dev

使用C ++ Win32 API启用视觉样式吗?

来自分类Dev

Win32 API C ++菜单栏

来自分类Dev

使用Win32 Api在C程序中进行串行连接

来自分类Dev

C Win32 API:设置复选框的状态

来自分类Dev

使用自定义绘图在Win32 API中设置按钮文本颜色

来自分类Dev

程序使用C编程中的Win32 API获取所有本地用户及其对给定文件的许可

来自分类Dev

(C ++)使用g ++返回“对WinMain @ 16的未定义引用”的Win32 API示例代码

来自分类Dev

C ++ 11和Win32 wchar_t

来自分类Dev

C ++如何使用Win32 API通过线程从文本框中获取文本

来自分类Dev

如何使用Win32 API获取任何线程的堆栈大小和堆栈限制

来自分类Dev

列出使用Win32 API存储在纯资源库(DLL)中的消息ID和符号名

来自分类Dev

GetGuiResources WIn32 API使用

来自分类Dev

如何在编辑框中显示/添加文件路径(或任何文本)?(C ++ Win32 API)

来自分类Dev

Win32 API:如何在编辑控件中更改部分文本的颜色

来自分类Dev

使用Win32 C ++和钩子从应用程序中的按钮获取文本

来自分类Dev

在C ++中使用Win32 Api在任务栏中设置NOTIFY ICON

来自分类Dev

如何使用Win32 API从INI文件中删除部分?

来自分类Dev

如何使用 Win32 API 阻止来自透明窗口的鼠标输入?

来自分类Dev

Python win32 api drawText() 和 SetTextColor

Related 相关文章

  1. 1

    如何禁用按钮-Win32 API

  2. 2

    使用C ++ Win32 GUI在窗口中显示文本

  3. 3

    使用Win32 / C ++ API更改Windows 7墙纸(未实现操作异常)

  4. 4

    如何使用Win32 API获取任何线程的堆栈大小和堆栈限制

  5. 5

    GetGuiResources WIn32 API使用

  6. 6

    如何更改Android中弹出菜单的文本颜色和大小?

  7. 7

    检查是否正在使用Win32 API或C / C ++写入文件。我本人没有写权限

  8. 8

    Win32 API:如何在编辑控件中更改部分文本的颜色

  9. 9

    Poco C ++库和Win32 GUI集成

  10. 10

    C ++ Win32 Api资源文件

  11. 11

    使用C ++ Win32 API启用视觉样式吗?

  12. 12

    Win32 API C ++菜单栏

  13. 13

    使用Win32 Api在C程序中进行串行连接

  14. 14

    C Win32 API:设置复选框的状态

  15. 15

    使用自定义绘图在Win32 API中设置按钮文本颜色

  16. 16

    程序使用C编程中的Win32 API获取所有本地用户及其对给定文件的许可

  17. 17

    (C ++)使用g ++返回“对WinMain @ 16的未定义引用”的Win32 API示例代码

  18. 18

    C ++ 11和Win32 wchar_t

  19. 19

    C ++如何使用Win32 API通过线程从文本框中获取文本

  20. 20

    如何使用Win32 API获取任何线程的堆栈大小和堆栈限制

  21. 21

    列出使用Win32 API存储在纯资源库(DLL)中的消息ID和符号名

  22. 22

    GetGuiResources WIn32 API使用

  23. 23

    如何在编辑框中显示/添加文件路径(或任何文本)?(C ++ Win32 API)

  24. 24

    Win32 API:如何在编辑控件中更改部分文本的颜色

  25. 25

    使用Win32 C ++和钩子从应用程序中的按钮获取文本

  26. 26

    在C ++中使用Win32 Api在任务栏中设置NOTIFY ICON

  27. 27

    如何使用Win32 API从INI文件中删除部分?

  28. 28

    如何使用 Win32 API 阻止来自透明窗口的鼠标输入?

  29. 29

    Python win32 api drawText() 和 SetTextColor

热门标签

归档