edit - tablacus/TablacusDark GitHub Wiki

EDIT (入力ボックス)のダークモード対応

image

背景色と文字色を変更するには WM_CTLCOLOREDIT を STATIC みたいな感じで処理します。

#define TECL_DARKTEXT 0xffffff
#define TECL_DARKBG 0x202020
#define TECL_DARKEDITBG 0x181818

case WM_CTLCOLOREDIT:
	SetTextColor((HDC)wParam, TECL_DARKTEXT);
	SetBkColor((HDC)wParam, TECL_DARKBG);
	SetDCBrushColor((HDC)wParam, TECL_DARKEDITBG);
	return (LRESULT)GetStockObject(DC_BRUSH);

STATICと背景色を変えています。

image

枠線がちょっと目立つので1行の場合はテーマをdarkmode_cfdにします。

if (GetWindowLong(hwnd1, GWL_STYLE) & ES_MULTILINE) {
	::SetWindowTheme(hwnd1, g_bDarkMode ? L"darkmode_explorer" : L"explorer", NULL);
} else {
	::SetWindowTheme(hwnd1, g_bDarkMode ? L"darkmode_cfd" : L"cfd", NULL);
}

image

複数行の場合、darkmode_explorerにする理由はdarkmode_cfdだとスクロールバーがダークモードに対応していないからです。