>>21 ゲームのように一定のサイズ(800x600など)でしたいわけではないんですよね。ChangeDisplaySettingsとかでやったり、DirectXのメソでやったりあるが。スクリーン全体の幅を求めるのは GetDeviceCapsとかもある。
プロシャージャ内で
static RECT rcClient; 作成時にでもとっておくGetWindowRect(hWnd, &rcClient);
static RECT rcScreen; GetWindowRect(GetDesktopWindow(), &rcScreen); AdjustWindowRect(&rcScreen, WNDSTYLE, FALSE);
フル化したいとき MoveWindow(hWnd, rcScreen.left, rcScreen.top, rcScreen.right - rcScreen.left, rcScreen.bottom - rcScreen.top, TRUE);
元に戻したいとき MoveWindow(hWnd, rcClient.left, rcClient.top, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top, TRUE);
case WM_GETMINMAXINFO: {
RECT rc; LPMINMAXINFO lpmmi = (LPMINMAXINFO)lParam;
GetWindowRect(GetDesktopWindow(), &rc); // デスクトップのサイズを取得して
lpmmi->ptMaxSize.x = rc.right - rc.left; lpmmi->ptMaxSize.y = rc.bottom - rc.top;
AdjustWindowRect(&rc, WNDSTYLE, FALSE); // 最大値を変更、終了時に元に戻したほうがいいかも
lpmmi->ptMaxTrackSize.x = rc.right - rc.left; lpmmi->ptMaxTrackSize.y = rc.bottom - rc.top;
} return 0;
改行多いとかで書き込めなかったので、読みやすいように書いてね。spy++でどういうメッセージやり取りしているのか見たけど、WM_NCCALCSIZEとか使うのかもしれないが。