Win32API質問箱 Build60

このエントリーをはてなブックマークに追加
59規制中のため代理レスです
>>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とか使うのかもしれないが。