C ++ центральный текст в консольном приложении? - PullRequest
0 голосов
/ 08 февраля 2019

Я создаю консольное приложение, и мне нужно центрировать текст.Это мой код:

void centerText(const char* word)
{
    HWND hwnd = GetConsoleWindow();
    RECT rct;
    GetWindowRect(hwnd, &rct);
    HDC dc = GetDC(hwnd);
    _bstr_t msg(word);
    DrawText(dc, msg, -1, &rct, DT_CENTER | DT_SINGLELINE);
    ReleaseDC(hwnd, dc);
}

Но «слово / сообщение» не отображается.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 10 февраля 2019

Это работает?

#include <windows.h>

bool centerText(const char* word)
{
    HANDLE hFile = CreateFileW(L"CONOUT$", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);

    if (hFile)
    {
        short len = static_cast<short>(strlen(word));

        CONSOLE_SCREEN_BUFFER_INFO  csbi;
        GetConsoleScreenBufferInfo(hFile, &csbi);
        csbi.dwCursorPosition.X = (csbi.srWindow.Left - len)/2;
        SetConsoleCursorPosition(hFile, csbi.dwCursorPosition);

        puts(word);

        CloseHandle(hFile);
        return true;
    }

    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...