Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 5299 by yutakapon, Sun Jun 2 12:12:19 2013 UTC revision 5301 by yutakapon, Sun Jun 2 14:35:35 2013 UTC
# Line 1119  HWND FAR PASCAL GetNthWin(int n) Line 1119  HWND FAR PASCAL GetNthWin(int n)
1119  }  }
1120    
1121    
1122    // マルチモニターを考慮して、タスクバーを除いたディスプレイサイズを取得する。
1123    static void get_desktop_size_by_multi_monitor(HWND hwnd, RECT *rect)
1124    {
1125            HMONITOR hMon;
1126            MONITORINFO mi;
1127            HMODULE mod;
1128    
1129            // Windows95では未定義。
1130            if (((mod = GetModuleHandle("user32.dll")) != NULL) &&
1131                (GetProcAddress(mod,"MonitorFromWindow") != NULL)) {
1132                    hMon = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
1133    
1134                    ZeroMemory( &mi, sizeof( mi ));
1135                    mi.cbSize = sizeof( mi );
1136                    GetMonitorInfo(hMon, &mi);
1137                    *rect = mi.rcWork;  // タスクバーを除いたディスプレイサイズ
1138    
1139            } else {
1140                    // マルチモニタがサポートされていない場合
1141                    SystemParametersInfo(SPI_GETWORKAREA, 0, rect, 0);
1142    
1143            }
1144    
1145    }
1146    
1147  // 有効なウィンドウを探し、現在位置を記憶させておく。  // 有効なウィンドウを探し、現在位置を記憶させておく。
1148  static void get_valid_window_and_memorize_rect(HWND myhwnd, HWND hwnd[], int *num, int style)  static void get_valid_window_and_memorize_rect(HWND myhwnd, HWND hwnd[], int *num, int style)
1149  {  {
# Line 1162  void FAR PASCAL ShowAllWinSidebySide(HWN Line 1187  void FAR PASCAL ShowAllWinSidebySide(HWN
1187  {  {
1188          int n;          int n;
1189          HWND hwnd[MAXNWIN];          HWND hwnd[MAXNWIN];
1190            RECT rc;
1191            int width, i;
1192    
1193          get_valid_window_and_memorize_rect(myhwnd, hwnd, &n, WIN_SIDEBYSIDE);          get_valid_window_and_memorize_rect(myhwnd, hwnd, &n, WIN_SIDEBYSIDE);
1194    #if 0
1195          TileWindows(NULL, MDITILE_VERTICAL, NULL, n, hwnd);          TileWindows(NULL, MDITILE_VERTICAL, NULL, n, hwnd);
1196    #else
1197            get_desktop_size_by_multi_monitor(myhwnd, &rc);
1198    
1199            if (n <= 0)
1200                    return;
1201    
1202            width = (rc.right - rc.left) / n;
1203            for (i = 0 ; i < n ; i++) {
1204                    ShowWindow(hwnd[i], SW_RESTORE);
1205                    SetWindowPos(hwnd[i], 0,
1206                            width*i + rc.left,
1207                            rc.top,
1208                            width,
1209                            rc.bottom - rc.top,
1210                            SWP_NOOWNERZORDER | SWP_NOZORDER);
1211            }
1212            SetFocus(hwnd[0]);
1213    #endif
1214  }  }
1215    
1216  // ウィンドウを上下に並べて表示する(Show Windows Stacked)  // ウィンドウを上下に並べて表示する(Show Windows Stacked)
# Line 1172  void FAR PASCAL ShowAllWinStacked(HWND m Line 1218  void FAR PASCAL ShowAllWinStacked(HWND m
1218  {  {
1219          int n;          int n;
1220          HWND hwnd[MAXNWIN];          HWND hwnd[MAXNWIN];
1221            RECT rc;
1222            int height, i;
1223    
1224          get_valid_window_and_memorize_rect(myhwnd, hwnd, &n, WIN_STACKED);          get_valid_window_and_memorize_rect(myhwnd, hwnd, &n, WIN_STACKED);
1225    #if 0
1226          TileWindows(NULL, MDITILE_HORIZONTAL, NULL, n, hwnd);          TileWindows(NULL, MDITILE_HORIZONTAL, NULL, n, hwnd);
1227    #else
1228            get_desktop_size_by_multi_monitor(myhwnd, &rc);
1229    
1230            if (n <= 0)
1231                    return;
1232    
1233            height = (rc.bottom - rc.top) / n;
1234            for (i = 0 ; i < n ; i++) {
1235                    ShowWindow(hwnd[i], SW_RESTORE);
1236                    SetWindowPos(hwnd[i], 0,
1237                            rc.left,
1238                            rc.top + height*i,
1239                            rc.right - rc.left,
1240                            height,
1241                            SWP_NOOWNERZORDER | SWP_NOZORDER);
1242            }
1243            SetFocus(hwnd[0]);
1244    #endif
1245  }  }
1246    
1247  // ウィンドウを重ねて表示する(Cascade)  // ウィンドウを重ねて表示する(Cascade)

Legend:
Removed from v.5299  
changed lines
  Added in v.5301

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26