コントロールのサイズと位置は、ウィンドウ (dwm) によって変更されます。これを相殺するために、x と y の正確なスケーリングを取得する方法が必要です。
.exe
(3ds Max)へのプラグインを作成しているため、マニフェストを使用できません。3dsMax のマニフェストを変更できません (私はオートデスクではありません。setprocessdpiawareness()
別のプラグイン (dll)exe
であり、親プロセスのレイアウトを強制終了するため、 を呼び出すことはできません。
このソリューションは Windows 7、8、10 で動作するはずです。そのため、10 または 8.1 で導入された呼び出しは使用できません。
私はすでに試しました:
LogicalToPhysicalPoint(0,& p1);
PhysicalToLogicalPoint(0, &p2);
これは何も変更しません (ポイントは変更されません)。私は古い学校の C++ と一般的なコントロール (サブクラス化) を使用しています。親exeで実行されないため、WPFを使用できないため、WPFはありません。
HWND hw = CreateWindowEx(0, L"STATIC", L"thumbnails",
WS_CHILD | WS_VISIBLE | SS_WHITEFRAME | SS_BITMAP ,
9*2, 64*2, 90*2, 46*2, hParentDialog, 0, 0, 0);
コントロールのサイズと位置に魔法の「2 *」を追加した後、必要な場所に配置します。しかし、これは現在のモニターを備えた現在のマシンでのみ機能するハックです。
「2」を dwm が適用する乗数に置き換えたいと思います。