Changeset 1091 for trunk/src/user32/win32wbase.cpp
- Timestamp:
- Sep 29, 1999, 10:27:16 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note:
See TracChangeset
for help on using the changeset viewer.