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 5221 by yutakapon, Tue May 1 11:14:14 2012 UTC revision 5222 by yutakapon, Wed May 1 15:55:25 2013 UTC
# Line 1028  HWND FAR PASCAL GetNthWin(int n) Line 1028  HWND FAR PASCAL GetNthWin(int n)
1028          }          }
1029  }  }
1030    
1031    // マルチモニターを考慮して、タスクバーを除いたディスプレイサイズを取得する。
1032    static void get_desktop_size_by_multi_monitor(HWND hwnd, RECT *rect)
1033    {
1034            HMONITOR hMon;
1035            MONITORINFO mi;
1036    
1037            // FIXME: Windows95では未定義の模様。
1038            hMon = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
1039    
1040            ZeroMemory( &mi, sizeof( mi ));
1041            mi.cbSize = sizeof( mi );
1042            GetMonitorInfo(hMon, &mi);
1043            *rect = mi.rcWork;  // タスクバーを除いたディスプレイサイズ
1044    }
1045    
1046    // ウィンドウを左右に並べて表示する(Show Windows Side by Side)
1047    void FAR PASCAL ShowAllWinSidebySide(HWND myhwnd)
1048    {
1049            int i, n, width;
1050            HWND hwnd[MAXNWIN];
1051            RECT rc;
1052    
1053            get_desktop_size_by_multi_monitor(myhwnd, &rc);
1054    
1055            n = 0;
1056            for (i = 0 ; i < pm->NWin ; i++) {
1057                    if (IsIconic(pm->WinList[i]) || !IsWindowVisible(pm->WinList[i]))
1058                            continue;
1059    
1060                    if (pm->WinList[i] == myhwnd) {
1061                            hwnd[n] = hwnd[0];
1062                            hwnd[0] = myhwnd;
1063                    } else {
1064                            hwnd[n] = pm->WinList[i];
1065                    }
1066                    n++;
1067            }
1068            if (n <= 1)    // 有効なウィンドウが2つ以上の場合に限る
1069                    goto error;
1070    
1071            width = (rc.right - rc.left) / n;
1072            for (i = 0 ; i < n ; i++) {
1073                    ShowWindow(hwnd[i], SW_RESTORE);
1074                    SetWindowPos(hwnd[i], 0,
1075                            width*i + rc.left,
1076                            rc.top,
1077                            width,
1078                            rc.bottom - rc.top,
1079                            SWP_NOOWNERZORDER | SWP_NOZORDER);
1080            }
1081            SetFocus(hwnd[0]);
1082    
1083    error:
1084            return;
1085    }
1086    
1087    // ウィンドウを上下に並べて表示する(Show Windows Stacked)
1088    void FAR PASCAL ShowAllWinStacked(HWND myhwnd)
1089    {
1090            int i, n, height;
1091            HWND hwnd[MAXNWIN];
1092            RECT rc;
1093    
1094            get_desktop_size_by_multi_monitor(myhwnd, &rc);
1095    
1096            n = 0;
1097            for (i = 0 ; i < pm->NWin ; i++) {
1098                    if (IsIconic(pm->WinList[i]) || !IsWindowVisible(pm->WinList[i]))
1099                            continue;
1100    
1101                    if (pm->WinList[i] == myhwnd) {
1102                            hwnd[n] = hwnd[0];
1103                            hwnd[0] = myhwnd;
1104                    } else {
1105                            hwnd[n] = pm->WinList[i];
1106                    }
1107                    n++;
1108            }
1109            if (n <= 1)    // 有効なウィンドウが2つ以上の場合に限る
1110                    goto error;
1111    
1112            height = (rc.bottom - rc.top) / n;
1113            for (i = 0 ; i < n ; i++) {
1114                    ShowWindow(hwnd[i], SW_RESTORE);
1115                    SetWindowPos(hwnd[i], 0,
1116                            rc.left,
1117                            rc.top + height*i,
1118                            rc.right - rc.left,
1119                            height,
1120                            SWP_NOOWNERZORDER | SWP_NOZORDER);
1121            }
1122            SetFocus(hwnd[0]);
1123    
1124    error:
1125            return;
1126    }
1127    
1128    // ウィンドウを重ねて表示する(Cascade)
1129    void FAR PASCAL ShowAllWinCascade(HWND myhwnd)
1130    {
1131            // TODO:
1132    }
1133    
1134  int FAR PASCAL CommReadRawByte(PComVar cv, LPBYTE b)  int FAR PASCAL CommReadRawByte(PComVar cv, LPBYTE b)
1135  {  {
1136          if ( ! cv->Ready ) {          if ( ! cv->Ready ) {

Legend:
Removed from v.5221  
changed lines
  Added in v.5222

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