ChatGPT で「Windows コンソールアプリで DC を使用する方法」と入力してみた.
すると,使えそうなコードが表示された.
#include <Windows.h>
#include "i_define.hxx"
#include "con_wnd.hxx"
int main() {
// 1. コンソールウィンドウのハンドルを取得する
HWND consoleWindow = ::GetConsoleWindow();
// 2. コンソールウィンドウのDCを取得する
HDC consoleDC = GetDC(consoleWindow);
// 3. DCを使用して描画する
TextOut(consoleDC, 10, 100, _T("Hello, World!"), _tcslen(_T("Hello, World!")));
// 4. DCを解放する
ReleaseDC(consoleWindow, consoleDC);
return 0;
}
そのままではエラーになる部分があったので,少し修正している.
コンソール AP のウィンドウで GDI が使えるのは知らなかった.
BMP を表示するコード.
{
// ...
tstring dib_name = file_name ;
if (::File_IsNothing(dib_name)) { return false ; }
i_DIB dib = ::DIB_Load(dib_name.c_str()) ;
{
HWND hWnd = ::GetConsoleWindow() ;
{
RECT rect = { 0 } ;
::GetWindowRect(hWnd,&rect) ;
HDC hDC = ::GetDC(hWnd) ;
::DrawDIB(hDC,rect,dib) ;
::ReleaseDC(hWnd,hDC) ;
}
}
// ...
}
{
HWND hWnd = ::GetConsoleHwnd () ;
D_I_E die ;
die.SetDocPath(dib_name.c_str()) ;
die.Draw(hWnd) ;
}
[…] 2023/03 に ::GetConsoleWindow を使用したので,その関連のまとめ. VC 7 以降,WinCon.h に ::GetConsoleWindow […]