- Timestamp:
- Sep 29, 1999, 10:27:16 AM (26 years ago)
- Location:
- trunk/src/user32
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/oslibwin.cpp
r1057 r1091 1 /* $Id: oslibwin.cpp,v 1. 9 1999-09-26 10:09:59sandervl Exp $ */1 /* $Id: oslibwin.cpp,v 1.10 1999-09-29 08:27:15 sandervl Exp $ */ 2 2 /* 3 3 * Window API wrappers for OS/2 … … 709 709 } 710 710 return TRUE; 711 } 712 //****************************************************************************** 713 //****************************************************************************** 714 ULONG OSLibWinGetScrollPos(HWND hwndParent, int scrollBar) 715 { 716 HWND hwndScroll; 717 718 if(scrollBar == OSLIB_VSCROLL) { 719 hwndScroll = WinWindowFromID(hwndParent, FID_VERTSCROLL); 720 } 721 else hwndScroll = WinWindowFromID(hwndParent, FID_HORZSCROLL); 722 723 if(hwndScroll == NULL) 724 return 0; 725 726 return (ULONG)WinSendMsg(hwndScroll, SBM_QUERYPOS, 0, 0); 727 } 728 //****************************************************************************** 729 //****************************************************************************** 730 ULONG OSLibWinSetScrollPos(HWND hwndParent, int scrollBar, int pos, int fRedraw) 731 { 732 HWND hwndScroll; 733 ULONG oldPos; 734 735 if(scrollBar == OSLIB_VSCROLL) { 736 hwndScroll = WinWindowFromID(hwndParent, FID_VERTSCROLL); 737 } 738 else hwndScroll = WinWindowFromID(hwndParent, FID_HORZSCROLL); 739 740 if(hwndScroll == NULL) 741 return 0; 742 743 oldPos = (ULONG)WinSendMsg(hwndScroll, SBM_QUERYPOS, 0, 0); 744 745 if(WinSendMsg(hwndScroll, SBM_SETPOS, MPFROMSHORT(pos), MPFROMLONG(fRedraw)) == FALSE) 746 return 0; 747 748 return oldPos; 749 } 750 //****************************************************************************** 751 //****************************************************************************** 752 BOOL OSLibWinSetScrollRange(HWND hwndParent, int scrollBar, int minpos, 753 int maxpos, int fRedraw) 754 { 755 HWND hwndScroll; 756 757 if(scrollBar == OSLIB_VSCROLL) { 758 hwndScroll = WinWindowFromID(hwndParent, FID_VERTSCROLL); 759 } 760 else hwndScroll = WinWindowFromID(hwndParent, FID_HORZSCROLL); 761 762 if(hwndScroll == NULL) 763 return 0; 764 765 return (BOOL)WinSendMsg( hwndScroll, SBM_SETSCROLLBAR, 766 MPFROMLONG(WinSendMsg(hwndScroll, SBM_QUERYPOS, 0, 0)), 767 MPFROM2SHORT( minpos ,maxpos ) ); 768 } 769 //****************************************************************************** 770 //****************************************************************************** 771 BOOL OSLibWinSetScrollPageSize(HWND hwndParent, int scrollBar, int pagesize, 772 int totalsize, int fRedraw) 773 { 774 HWND hwndScroll; 775 776 if(scrollBar == OSLIB_VSCROLL) { 777 hwndScroll = WinWindowFromID(hwndParent, FID_VERTSCROLL); 778 } 779 else hwndScroll = WinWindowFromID(hwndParent, FID_HORZSCROLL); 780 781 if(hwndScroll == NULL) 782 return 0; 783 784 return (BOOL)WinSendMsg( hwndScroll, SBM_SETTHUMBSIZE, 785 MPFROM2SHORT(pagesize, totalsize), 786 0); 787 } 788 //****************************************************************************** 789 //****************************************************************************** 790 void OSLibWinChangeScrollStyle(HWND hwndParent, int scrollBar, int Reserved) 791 { 792 HWND hwndScroll; 793 794 if(scrollBar == OSLIB_VSCROLL) { 795 hwndScroll = WinWindowFromID(hwndParent, FID_VERTSCROLL); 796 } 797 else hwndScroll = WinWindowFromID(hwndParent, FID_HORZSCROLL); 798 799 if(hwndScroll == NULL) 800 return; 801 802 WinSetWindowULong(hwndScroll, QWL_STYLE, 803 WinQueryWindowULong(hwndScroll, QWL_STYLE) | 804 SBS_AUTOTRACK | SBS_AUTOSIZE); 711 805 } 712 806 //****************************************************************************** -
trunk/src/user32/oslibwin.h
r1057 r1091 1 /* $Id: oslibwin.h,v 1. 5 1999-09-26 10:09:59sandervl Exp $ */1 /* $Id: oslibwin.h,v 1.6 1999-09-29 08:27:15 sandervl Exp $ */ 2 2 /* 3 3 * Window API wrappers for OS/2 … … 246 246 BOOL OSLibWinEnableScrollBar(HWND hwndParent, int scrollBar, BOOL fEnable); 247 247 BOOL OSLibWinShowScrollBar(HWND hwndParent, int scrollBar, BOOL fShow); 248 ULONG OSLibWinGetScrollPos(HWND hwndParent, int scrollBar); 249 ULONG OSLibWinSetScrollPos(HWND hwndParent, int scrollBar, int pos, int fRedraw); 250 BOOL OSLibWinSetScrollRange(HWND hwndParent, int scrollBar, int minpos, 251 int maxpos, int fRedraw); 252 BOOL OSLibWinSetScrollPageSize(HWND hwndParent, int scrollBar, int pagesize, 253 int totalsize, int fRedraw); 254 void OSLibWinChangeScrollStyle(HWND hwndParent, int scrollBar, int Reserved); 255 248 256 void OSLibTranslateScrollCmdAndMsg(ULONG *msg, ULONG *scrollcmd); 249 257 -
trunk/src/user32/scroll.cpp
r1064 r1091 1 /* $Id: scroll.cpp,v 1. 3 1999-09-26 15:25:55 sandervl Exp $ */1 /* $Id: scroll.cpp,v 1.4 1999-09-29 08:27:15 sandervl Exp $ */ 2 2 /* 3 3 * Scrollbar control … … 167 167 static SCROLLBAR_INFO *SCROLL_GetScrollInfo( HWND hwnd, INT nBar ) 168 168 { 169 return SCROLL_GetPtrScrollInfo( hwnd, nBar ); 169 Win32BaseWindow *window; 170 171 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 172 if(!window && nBar != SB_CTL) { 173 dprintf(("SCROLL_GetScrollInfo window %x not found!", hwnd)); 174 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 175 return NULL; 176 } 177 178 if (window) { 179 return window->getScrollInfo(nBar); 180 } 181 182 return SCROLL_GetPtrScrollInfo( hwnd, nBar ); 170 183 } 171 184 … … 1125 1138 Win32BaseWindow *window; 1126 1139 INT action; 1127 INT retVal = SCROLL_SetScrollInfo( hwnd, nBar, info, &action );1140 INT retVal; 1128 1141 1129 1142 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1130 if(!window ) {1143 if(!window && nBar != SB_CTL) { 1131 1144 dprintf(("SetScrollInfo window not found!")); 1132 1145 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 1133 1146 return FALSE; 1134 1147 } 1135 1148 if(window) { 1149 return window->setScrollInfo(nBar, (SCROLLINFO *)info, bRedraw); 1150 } 1151 1152 retVal = SCROLL_SetScrollInfo( hwnd, nBar, info, &action ); 1136 1153 if( action & SA_SSI_HIDE ) 1137 1154 SCROLL_ShowScrollBar( hwnd, nBar, FALSE, FALSE ); … … 1170 1187 1171 1188 /* Set the page size */ 1172 1173 1189 if (info->fMask & SIF_PAGE) 1174 1190 { … … 1182 1198 1183 1199 /* Set the scroll pos */ 1184 1185 1200 if (info->fMask & SIF_POS) 1186 1201 { … … 1194 1209 1195 1210 /* Set the scroll range */ 1196 1197 1211 if (info->fMask & SIF_RANGE) 1198 1212 { … … 1239 1253 1240 1254 /* Check if the scrollbar should be hidden or disabled */ 1241 1242 1255 if (info->fMask & (SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL)) 1243 1256 { … … 1288 1301 LPSCROLLINFO info /* [IO] (info.fMask [I] specifies which values are to retrieve) */) 1289 1302 { 1290 Win32BaseWindow *window;1291 1303 SCROLLBAR_INFO *infoPtr; 1292 1304 1293 window = Win32BaseWindow::GetWindowFromHandle(hwnd);1294 if(!window) {1295 dprintf(("GetScrollInfo window not found!"));1296 SetLastError(ERROR_INVALID_WINDOW_HANDLE);1297 return FALSE;1298 }1299 1305 if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ))) return FALSE; 1300 1306 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return FALSE; … … 1330 1336 BOOL bRedraw /* [I] Should scrollbar be redrawn afterwards ? */ ) 1331 1337 { 1332 Win32BaseWindow *window;1333 1338 SCROLLINFO info; 1334 1339 SCROLLBAR_INFO *infoPtr; … … 1336 1341 1337 1342 dprintf(("SetScrollPos %x %d %d %d", hwnd, nBar, nPos, bRedraw)); 1338 window = Win32BaseWindow::GetWindowFromHandle(hwnd);1339 if(!window) {1340 dprintf(("SetScrollPos window not found!"));1341 SetLastError(ERROR_INVALID_WINDOW_HANDLE);1342 return FALSE;1343 }1344 1345 1343 if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ))) return 0; 1346 1344 oldPos = infoPtr->CurVal; … … 1366 1364 INT nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */) 1367 1365 { 1368 Win32BaseWindow *window;1369 1366 SCROLLBAR_INFO *infoPtr; 1370 1367 1371 1368 dprintf(("GetScrollPos %x %d", hwnd, nBar)); 1372 1369 1373 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1374 if(!window) { 1375 dprintf(("GetScrollPos window not found!")); 1376 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 1377 return 0; 1378 } 1379 1380 if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ))) return 0; 1370 infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ); 1371 if (!infoPtr) return 0; 1372 1381 1373 return infoPtr->CurVal; 1382 1374 } … … 1393 1385 BOOL bRedraw /* [I] Should scrollbar be redrawn afterwards ? */) 1394 1386 { 1395 Win32BaseWindow *window;1396 1387 SCROLLINFO info; 1397 1388 1398 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1399 if(!window) { 1400 dprintf(("SetScrollRange window not found!")); 1401 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 1402 return FALSE; 1403 } 1404 1389 dprintf(("SetScrollRange %x %x %d %d %d", hwnd, nBar, MinVal, MaxVal, bRedraw)); 1405 1390 info.cbSize = sizeof(info); 1406 1391 info.nMin = MinVal; … … 1455 1440 LPINT lpMax /* [O] Where to store maximum value */) 1456 1441 { 1457 Win32BaseWindow *window;1458 1442 SCROLLBAR_INFO *infoPtr; 1459 1443 1460 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1461 if(!window) { 1462 dprintf(("GetScrollRange window not found!")); 1463 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 1464 return FALSE; 1465 } 1466 1467 if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ))) 1444 infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ); 1445 if (!infoPtr) 1468 1446 { 1469 1447 if (lpMin) lpMin = 0; … … 1566 1544 1567 1545 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1568 if(!window ) {1546 if(!window && nBar != SB_CTL) { 1569 1547 dprintf(("ShowScrollBar window not found!")); 1570 1548 SetLastError(ERROR_INVALID_WINDOW_HANDLE); … … 1600 1578 1601 1579 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1602 if(!window ) {1580 if(!window && nBar != SB_CTL) { 1603 1581 dprintf(("EnableScrollBar window not found!")); 1604 1582 SetLastError(ERROR_INVALID_WINDOW_HANDLE); -
trunk/src/user32/win32wbase.cpp
r1083 r1091 1 /* $Id: win32wbase.cpp,v 1.1 8 1999-09-28 13:27:52sandervl Exp $ */1 /* $Id: win32wbase.cpp,v 1.19 1999-09-29 08:27:15 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 122 122 PSEraseFlag = FALSE; 123 123 SupressEraseFlag = FALSE; 124 125 horzScrollInfo = NULL; 126 vertScrollInfo = NULL; 127 124 128 } 125 129 //****************************************************************************** … … 146 150 free(windowNameW); 147 151 windowNameW = NULL; 152 } 153 if(vertScrollInfo) { 154 free(vertScrollInfo); 155 vertScrollInfo = NULL; 156 } 157 if(horzScrollInfo) { 158 free(horzScrollInfo); 159 horzScrollInfo = NULL; 148 160 } 149 161 } … … 361 373 #endif 362 374 375 if (cs->style & WS_HSCROLL) 376 { 377 horzScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO)); 378 horzScrollInfo->MinVal = horzScrollInfo->CurVal = horzScrollInfo->Page = 0; 379 horzScrollInfo->MaxVal = 100; 380 horzScrollInfo->flags = ESB_ENABLE_BOTH; 381 } 382 383 if (cs->style & WS_VSCROLL) 384 { 385 vertScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO)); 386 vertScrollInfo->MinVal = vertScrollInfo->CurVal = vertScrollInfo->Page = 0; 387 vertScrollInfo->MaxVal = 100; 388 vertScrollInfo->flags = ESB_ENABLE_BOTH; 389 } 390 363 391 /* Send the WM_GETMINMAXINFO message and fix the size if needed */ 364 392 if ((cs->style & WS_THICKFRAME) || !(cs->style & (WS_POPUP | WS_CHILD))) … … 427 455 dprintf(("WM_CREATE: WinSetWindowULong2 %X failed!!", OS2Hwnd)); 428 456 return FALSE; 457 } 458 if(cs->style & WS_HSCROLL) { 459 OSLibWinChangeScrollStyle(OS2HwndFrame, OSLIB_HSCROLL, 0); 460 } 461 if(cs->style & WS_VSCROLL) { 462 OSLibWinChangeScrollStyle(OS2HwndFrame, OSLIB_VSCROLL, 0); 429 463 } 430 464 #if 0 … … 1211 1245 } 1212 1246 //****************************************************************************** 1247 //TODO: Not complete (flags) 1248 //****************************************************************************** 1249 SCROLLBAR_INFO *Win32BaseWindow::getScrollInfo(int nBar) 1250 { 1251 switch(nBar) { 1252 case SB_HORZ: 1253 if(horzScrollInfo) { 1254 horzScrollInfo->CurVal = OSLibWinGetScrollPos(OS2HwndFrame, OSLIB_HSCROLL); 1255 return horzScrollInfo; 1256 } 1257 break; 1258 case SB_VERT: 1259 if(vertScrollInfo) { 1260 vertScrollInfo->CurVal = OSLibWinGetScrollPos(OS2HwndFrame, OSLIB_VSCROLL); 1261 return vertScrollInfo; 1262 } 1263 break; 1264 } 1265 return NULL; 1266 } 1267 //****************************************************************************** 1268 //TODO: Not complete 1269 //****************************************************************************** 1270 LONG Win32BaseWindow::setScrollInfo(int nBar, SCROLLINFO *info, int fRedraw) 1271 { 1272 SCROLLBAR_INFO *infoPtr; 1273 ULONG scrollType; 1274 int new_flags; 1275 1276 switch(nBar) { 1277 case SB_HORZ: 1278 if(!horzScrollInfo) { 1279 return 0; 1280 } 1281 infoPtr = horzScrollInfo; 1282 scrollType = OSLIB_HSCROLL; 1283 break; 1284 case SB_VERT: 1285 if(!vertScrollInfo) { 1286 return 0; 1287 } 1288 infoPtr = vertScrollInfo; 1289 scrollType = OSLIB_VSCROLL; 1290 break; 1291 default: 1292 return 0; 1293 } 1294 1295 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return 0; 1296 if ((info->cbSize != sizeof(*info)) && 1297 (info->cbSize != sizeof(*info)-sizeof(info->nTrackPos))) return 0; 1298 1299 /* Set the page size */ 1300 if (info->fMask & SIF_PAGE) 1301 { 1302 if( infoPtr->Page != info->nPage ) 1303 { 1304 infoPtr->Page = info->nPage; 1305 OSLibWinSetScrollPageSize(OS2HwndFrame, scrollType, info->nPage, infoPtr->MaxVal, fRedraw); 1306 } 1307 } 1308 1309 /* Set the scroll pos */ 1310 if (info->fMask & SIF_POS) 1311 { 1312 if( infoPtr->CurVal != info->nPos ) 1313 { 1314 infoPtr->CurVal = info->nPos; 1315 OSLibWinSetScrollPos(OS2HwndFrame, scrollType, info->nPos, fRedraw); 1316 } 1317 } 1318 1319 /* Set the scroll range */ 1320 if (info->fMask & SIF_RANGE) 1321 { 1322 /* Invalid range -> range is set to (0,0) */ 1323 if ((info->nMin > info->nMax) || 1324 ((UINT)(info->nMax - info->nMin) >= 0x80000000)) 1325 { 1326 infoPtr->MinVal = 0; 1327 infoPtr->MaxVal = 0; 1328 } 1329 else 1330 { 1331 if( infoPtr->MinVal != info->nMin || 1332 infoPtr->MaxVal != info->nMax ) 1333 { 1334 infoPtr->MinVal = info->nMin; 1335 infoPtr->MaxVal = info->nMax; 1336 1337 OSLibWinSetScrollRange(OS2HwndFrame, scrollType, info->nMin, info->nMax, fRedraw); 1338 } 1339 } 1340 } 1341 1342 /* Make sure the page size is valid */ 1343 if (infoPtr->Page < 0) infoPtr->Page = 0; 1344 else if (infoPtr->Page > infoPtr->MaxVal - infoPtr->MinVal + 1 ) 1345 infoPtr->Page = infoPtr->MaxVal - infoPtr->MinVal + 1; 1346 1347 /* Make sure the pos is inside the range */ 1348 if (infoPtr->CurVal < infoPtr->MinVal) 1349 infoPtr->CurVal = infoPtr->MinVal; 1350 else if (infoPtr->CurVal > infoPtr->MaxVal - MAX( infoPtr->Page-1, 0 )) 1351 infoPtr->CurVal = infoPtr->MaxVal - MAX( infoPtr->Page-1, 0 ); 1352 1353 /* Check if the scrollbar should be hidden or disabled */ 1354 if (info->fMask & (SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL)) 1355 { 1356 new_flags = infoPtr->flags; 1357 if (infoPtr->MinVal >= infoPtr->MaxVal - MAX( infoPtr->Page-1, 0 )) 1358 { 1359 /* Hide or disable scroll-bar */ 1360 if (info->fMask & SIF_DISABLENOSCROLL) 1361 { 1362 new_flags = ESB_DISABLE_BOTH; 1363 //TODO: 1364 } 1365 else if (nBar != SB_CTL) 1366 { 1367 //TODO 1368 goto done; 1369 } 1370 } 1371 else /* Show and enable scroll-bar */ 1372 { 1373 //TODO 1374 new_flags = 0; 1375 } 1376 1377 if (infoPtr->flags != new_flags) /* check arrow flags */ 1378 { 1379 infoPtr->flags = new_flags; 1380 } 1381 } 1382 1383 done: 1384 /* Return current position */ 1385 1386 return infoPtr->CurVal; 1387 } 1388 //****************************************************************************** 1213 1389 //****************************************************************************** 1214 1390 LRESULT Win32BaseWindow::DefWindowProcA(UINT Msg, WPARAM wParam, LPARAM lParam) … … 1350 1526 #if 0 1351 1527 case WM_SYSKEYDOWN: 1352 1353 1354 if(wParam == VK_F4)/* try to close the window */1355 1356 1357 1358 1359 1360 1361 1362 1528 if(HIWORD(lParam) & KEYDATA_ALT) 1529 { 1530 if(wParam == VK_F4) /* try to close the window */ 1531 { 1532 HWND hWnd = WIN_GetTopParent( wndPtr->hwndSelf ); 1533 wndPtr = WIN_FindWndPtr( hWnd ); 1534 if( wndPtr && !(getClass()->getStyle() & CS_NOCLOSE) ) 1535 PostMessage(WM_SYSCOMMAND, SC_CLOSE, 0); 1536 } 1537 } 1538 return 0; 1363 1539 #endif 1364 1540 -
trunk/src/user32/win32wbase.h
r1067 r1091 1 /* $Id: win32wbase.h,v 1. 8 1999-09-26 22:24:31sandervl Exp $ */1 /* $Id: win32wbase.h,v 1.9 1999-09-29 08:27:16 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 22 22 #include <winres.h> 23 23 #include <winconst.h> 24 #include <scroll.h> 24 25 25 26 class Win32BaseWindow; … … 174 175 175 176 Win32BaseWindow *getTopParent(); 177 SCROLLBAR_INFO *getScrollInfo(int nBar); 178 LONG setScrollInfo(int nBar, SCROLLINFO *info, int fRedraw); 176 179 177 180 LRESULT SendMessageA(ULONG msg, WPARAM wParam, LPARAM lParam); … … 243 246 RECT rectWindow; 244 247 RECT rectClient; 248 249 SCROLLBAR_INFO *vertScrollInfo; 250 SCROLLBAR_INFO *horzScrollInfo; 245 251 246 252 Win32WndClass *windowClass;
Note:
See TracChangeset
for help on using the changeset viewer.