色々試しましたがconst char*にキャストすれば行けました。
Cスタイルキャストなら危ないけど短くて済みますが、reinterpret_castだと結構長くなるのが懸念・・・
// これはOK
DrawString( 0, 0, (TCHAR*)u8"abc123あいうえお", 0xffffff );
// これもOK
DrawString( 0, 20, (const char*)u8"abc123あいうえお", 0xffffff );
// これだとエラー:'reinterpret_cast': 'const char8_t [22]' から 'TCHAR *' に変換できません。
DrawString( 0, 100, reinterpret_cast<TCHAR*>( u8"abc123あいうえお" ), 0xffffff );
// これならOK
DrawString( 0, 120, reinterpret_cast<const char*>( u8"abc123あいうえお" ), 0xffffff );
// これだとエラー:無効な型変換です
DrawString( 0, 200, static_cast<TCHAR*>( u8"aaaaあいうえお" ), 0xffffff );
// これだとエラー:無効な型変換です
DrawString( 0, 220, static_cast<const char*>( u8"aaaaあいうえお" ), 0xffffff );