

# 前置き

Visual Studio 2017でWin32API+Direct2Dのアプリケーションを作っていて高DPIで描画させたいと思いました．  
そこでHWNDが初期化される前にSetProcessDpiAwarenessContext関数を，引数をDPI_AWARENESS_CONTEXT_SYSTEM_AWAREとして呼び出しました．私の環境では，DPIに対してUnawareならばGetDeviceCaps(hdc,
LOGPIXELSX),GetDeviceCaps(hdc, LOGPIXELSX)の戻り値が96となり，System
awareだった場合192となります．

# 発生した問題

D2D1::RenderTargetPropertiesのDPIの値をこれらの値で初期化した時，96であれば問題なくDirect2Dが働いて描画されるのですが，DPIが192だった場合描画されなくなるのです．MinGW
8.1.0で同じようにSetProcessDpiAwarenessContextを呼び出した場合DPIが192であっても描画されるのですが，Visual
Studioで作成した場合描画されなくなります．  
ネットで調べたのですがこのような事例が見当たらず．．．  
MinGWで動いて，Visual Studioで動かないということはSDKの問題なのかもしれません．

とにかく，どのようにすればDirect2Dを用いて高DPIで描画できるのでしょうか．  
よろしくお願いいたします．

# 環境

Windows 10 64ビット(バージョン：1903，OSビルド：18362.959)  
Visual Studio 2017 （問題が発生した環境）  
MinGW 8.1.0 （問題が発生しなかった環境）


CC BY-SA 4.0
2020-07-17T16:31:29.253
68680
2020-07-17T23:03:40.373
2020-07-17T23:03:40.373
4236
32650
question
windows winapi directx mingw dpi
Win32API+Direct2Dでの高DPI環境での不具合について