イネマルのプログラミング備忘録

趣味プログラマのメモ

【WinAPI】C++ ウィンドウの最小サイズと最大サイズを取得する(WM_GETMINMAXINFO)

メモ

ウィンドウメッセージ「WM_GETMINMAXINFO」を、目的のウィンドウに送信して取得する。
ウィンドウのサイズ制御は、アプリ毎に実装が異なるので、
ウィンドウ側がメッセージを処理していない場合には、取得できないことに注意する。

実装

int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    // 適当なウィンドウハンドル
    auto hWnd = ::FindWindow(nullptr, TEXT("Microsoft Visual Studio"));

    // 最小・最大サイズを取得
    MINMAXINFO mmInfo{};
    ::SendMessage(hWnd, WM_GETMINMAXINFO, 0, reinterpret_cast<LPARAM>(&mmInfo));
    
    // 最小サイズ
    mmInfo.ptMinTrackSize.x;
    mmInfo.ptMinTrackSize.y;

    // 最大サイズ
    mmInfo.ptMaxTrackSize.x;
    mmInfo.ptMaxTrackSize.y;

    return 0;
}

参考

social.msdn.microsoft.com