Ignore:
Timestamp:
Jan 9, 2000, 3:14:25 PM (26 years ago)
Author:
cbratschi
Message:

scrollbar support and many other things

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/new/win32wbase.cpp

    r2377 r2381  
    1 /* $Id: win32wbase.cpp,v 1.25 2000-01-08 16:47:48 cbratschi Exp $ */
     1/* $Id: win32wbase.cpp,v 1.26 2000-01-09 14:14:24 cbratschi Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    4444#include "winmouse.h"
    4545#include <win\hook.h>
     46#include <shellapi.h>
    4647#define INCL_TIMERWIN32
    4748#include "timer.h"
     49
     50#define SC_ABOUTWINE            (SC_SCREENSAVE+1)
     51#define SC_PUTMARK              (SC_SCREENSAVE+2)
    4852
    4953#define HAS_DLGFRAME(style,exStyle) \
     
    5357#define HAS_THICKFRAME(style,exStyle) \
    5458    (((style) & WS_THICKFRAME) && \
    55      !((exStyle) & WS_EX_DLGMODALFRAME))
     59     !((exStyle) & WS_EX_DLGMODALFRAME) && \
     60     !((style) & WS_CHILD))
    5661
    5762#define HAS_THINFRAME(style) \
     
    183188  OS2Hwnd          = 0;
    184189  OS2HwndFrame     = 0;
    185   OS2HwndMenu      = 0;
     190  hMenu            = 0;
     191  hSysMenu         = 0;
    186192  Win32Hwnd        = 0;
    187193
     
    223229  horzScrollInfo     = NULL;
    224230  vertScrollInfo     = NULL;
    225   hwndHorzScroll     = 0;
    226   hwndVertScroll     = 0;
    227231
    228232  ownDC              = 0;
     
    644648
    645649  OSLibWinSetOwner(OS2Hwnd, OS2HwndFrame);
    646 
    647   //FrameGetScrollBarHandles(this,dwStyle & WS_HSCROLL,dwStyle & WS_VSCROLL);
    648   //subclassScrollBars(dwStyle & WS_HSCROLL,dwStyle & WS_VSCROLL);
    649650
    650651  fakeWinBase.hwndThis     = OS2Hwnd;
     
    12231224//******************************************************************************
    12241225//******************************************************************************
    1225 VOID Win32BaseWindow::subclassScrollBars(BOOL subHorz,BOOL subVert)
    1226 {
    1227   SCROLL_SubclassScrollBars(subHorz ? hwndHorzScroll:0,subVert ? hwndVertScroll:0);
    1228 }
    1229 //******************************************************************************
    1230 //******************************************************************************
    1231 BOOL Win32BaseWindow::showScrollBars(BOOL changeHorz,BOOL changeVert,BOOL fShow)
    1232 {
    1233   BOOL rc = TRUE;
    1234   DWORD flags = 0;
    1235 
    1236   if (fShow)
    1237   {
    1238     BOOL createHorz = FALSE,createVert = FALSE;
    1239     BOOL showHorz = FALSE,showVert = FALSE;
    1240 
    1241     if (changeHorz)
    1242     {
    1243       if (!hwndHorzScroll)
    1244         createHorz = TRUE;
    1245       else
    1246         showHorz = TRUE;
    1247     }
    1248 
    1249     if (changeVert)
    1250     {
    1251       if (!hwndVertScroll)
    1252         createVert = TRUE;
    1253       else
    1254         showVert = TRUE;
    1255     }
    1256 
    1257     if (createHorz || createVert)
    1258     {
    1259       if (createHorz && !horzScrollInfo)
    1260       {
    1261         horzScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO));
    1262         horzScrollInfo->MinVal = horzScrollInfo->CurVal = horzScrollInfo->Page = 0;
    1263         horzScrollInfo->MaxVal = 100;
    1264         horzScrollInfo->flags  = ESB_ENABLE_BOTH;
    1265       }
    1266 
    1267       if (createVert && !vertScrollInfo)
    1268       {
    1269         vertScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO));
    1270         vertScrollInfo->MinVal = vertScrollInfo->CurVal = vertScrollInfo->Page = 0;
    1271         vertScrollInfo->MaxVal = 100;
    1272         vertScrollInfo->flags  = ESB_ENABLE_BOTH;
    1273       }
    1274 
    1275       rc = FrameCreateScrollBars(this,createHorz,createVert,FALSE,&flags);
    1276 
    1277       if (!rc) return FALSE;
    1278       if (createHorz) dwStyle |= WS_HSCROLL;
    1279       if (createVert) dwStyle |= WS_VSCROLL;
    1280     }
    1281 
    1282     if (showVert || showHorz)
    1283     {
    1284       DWORD newFlags;
    1285 
    1286       rc = FrameShowScrollBars(this,showHorz,showVert,fShow,FALSE,&newFlags);
    1287       flags |= newFlags;
    1288       if (rc)
    1289       {
    1290         if (showHorz) dwStyle |= WS_HSCROLL;
    1291         if (showVert) dwStyle |= WS_VSCROLL;
    1292       }
    1293     }
    1294 
    1295     if (flags) FrameUpdateFrame(this,flags);
    1296   } else
    1297   {
    1298     rc = FrameShowScrollBars(this,changeHorz && hwndHorzScroll,changeVert && hwndVertScroll,fShow,TRUE);
    1299 
    1300     if (rc)
    1301     {
    1302       if (changeHorz) dwStyle &= ~WS_HSCROLL;
    1303       if (changeVert) dwStyle &= ~WS_VSCROLL;
    1304     }
    1305   }
    1306 
    1307   return rc;
    1308 }
    1309 //******************************************************************************
    1310 //******************************************************************************
    13111226LONG Win32BaseWindow::HandleNCActivate(WPARAM wParam)
    13121227{
     
    14291344//******************************************************************************
    14301345//******************************************************************************
     1346VOID Win32BaseWindow::TrackScrollBar(WPARAM wParam,POINT pt)
     1347{
     1348  INT scrollbar;
     1349  MSG msg;
     1350
     1351  if ((wParam & 0xfff0) == SC_HSCROLL)
     1352  {
     1353    if ((wParam & 0x0f) != HTHSCROLL) return;
     1354    scrollbar = SB_HORZ;
     1355  } else  /* SC_VSCROLL */
     1356  {
     1357    if ((wParam & 0x0f) != HTVSCROLL) return;
     1358    scrollbar = SB_VERT;
     1359  }
     1360
     1361  pt.x -= rectWindow.left;
     1362  pt.y -= rectWindow.top;
     1363  SCROLL_HandleScrollEvent(Win32Hwnd,0,MAKELONG(pt.x,pt.y),scrollbar,WM_LBUTTONDOWN);
     1364  if (GetCapture() != Win32Hwnd) return;
     1365  do
     1366  {
     1367    GetMessageA(&msg,Win32Hwnd,0,0);
     1368    switch(msg.message)
     1369    {
     1370      case WM_LBUTTONUP:
     1371      case WM_MOUSEMOVE:
     1372        pt.x = msg.pt.x-rectWindow.left;
     1373        pt.y = msg.pt.y-rectWindow.top;
     1374        msg.lParam = MAKELONG(pt.x,pt.y);
     1375      case WM_SYSTIMER:
     1376        SCROLL_HandleScrollEvent(Win32Hwnd,msg.wParam,msg.lParam,scrollbar,msg.message);
     1377        break;
     1378
     1379      default:
     1380        TranslateMessage(&msg);
     1381        DispatchMessageA(&msg);
     1382        break;
     1383    }
     1384    if (!IsWindow())
     1385    {
     1386      ReleaseCapture();
     1387      break;
     1388    }
     1389  } while (msg.message != WM_LBUTTONUP);
     1390}
     1391//******************************************************************************
     1392//******************************************************************************
    14311393LONG Win32BaseWindow::HandleNCLButtonDown(WPARAM wParam,LPARAM lParam)
    14321394{
     
    18241786    if(hIcon == 0)
    18251787      if (!(dwStyle & DS_MODALFRAME))
    1826         hIcon = LoadImageA(0, MAKEINTRESOURCEA(OIC_WINEICON), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR);
     1788        hIcon = LoadImageA(0, MAKEINTRESOURCEA(OIC_ODINICON), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR);
    18271789
    18281790    if (hIcon)
     
    19861948  r.bottom--;
    19871949
    1988   FillRect( hdc, &r, GetSysColorBrush(active ? COLOR_ACTIVECAPTION : COLOR_INACTIVECAPTION) );
     1950  //CB: todo:
     1951   //COLOR_GRADIENTACTIVECAPTION
     1952   //COLOR_GRADIENTINACTIVECAPTION
     1953
     1954  FillRect(hdc,&r,GetSysColorBrush(active ? COLOR_ACTIVECAPTION:COLOR_INACTIVECAPTION));
    19891955
    19901956  if (!hbitmapClose)
     
    21352101
    21362102  /* Draw the scroll-bars */
    2137 #if 0 //CB: todo
    21382103  if (dwStyle & WS_VSCROLL)
    2139     SCROLL_DrawScrollBar(hwnd,hdc,SB_VERT,TRUE,TRUE);
    2140   if (wndPtr->dwStyle & WS_HSCROLL)
    2141     SCROLL_DrawScrollBar(hwnd,hdc,SB_HORZ,TRUE,TRUE);
    2142 #endif
     2104    SCROLL_DrawScrollBar(Win32Hwnd,hdc,SB_VERT,TRUE,TRUE);
     2105  if (dwStyle & WS_HSCROLL)
     2106    SCROLL_DrawScrollBar(Win32Hwnd,hdc,SB_HORZ,TRUE,TRUE);
     2107
    21432108  /* Draw the "size-box" */
    21442109  if ((dwStyle & WS_VSCROLL) && (dwStyle & WS_HSCROLL))
     
    22472212 * TODO: Not done (see #if 0)
    22482213 */
    2249 LONG Win32BaseWindow::HandleSysCommand(WPARAM wParam, POINT *pt32)
     2214LONG Win32BaseWindow::HandleSysCommand(WPARAM wParam,POINT *pt32)
    22502215{
    22512216    UINT uCommand = wParam & 0xFFF0;
    22522217
     2218/* //CB: don't need this, perhaps recycle for menus
    22532219    if ((getStyle() & WS_CHILD) && (uCommand != SC_KEYMENU))
    22542220        ScreenToClient(getParent()->getWindowHandle(), pt32 );
    2255 
     2221*/
    22562222    switch (uCommand)
    22572223    {
     
    23162282
    23172283    case SC_CLOSE:
    2318         return SendInternalMessageA(WM_CLOSE, 0, 0);
    2319 
    2320 #if 0
     2284        return SendInternalMessageA(WM_CLOSE,0,0);
     2285
    23212286    case SC_VSCROLL:
    23222287    case SC_HSCROLL:
    2323         NC_TrackScrollBar( hwnd, wParam, pt32 );
     2288        TrackScrollBar(wParam,*pt32);
    23242289        break;
    2325 
     2290#if 0
    23262291    case SC_MOUSEMENU:
    23272292        MENU_TrackMouseMenuBar( wndPtr, wParam & 0x000F, pt32 );
     
    23312296        MENU_TrackKbdMenuBar( wndPtr , wParam , pt.x );
    23322297        break;
    2333 
     2298#endif
    23342299    case SC_TASKLIST:
    2335         WinExec( "taskman.exe", SW_SHOWNORMAL );
     2300        WinExec("taskman.exe",SW_SHOWNORMAL);
    23362301        break;
    23372302
    23382303    case SC_SCREENSAVE:
    23392304        if (wParam == SC_ABOUTWINE)
    2340             ShellAboutA(hwnd, "Odin", ODIN_RELEASE_INFO, 0);
     2305            ShellAboutA(Win32Hwnd,"Odin","Odin alpha release compiled with IBM VAC++",0);
    23412306        else
    23422307        if (wParam == SC_PUTMARK)
    23432308            dprintf(("Mark requested by user\n"));
    23442309        break;
    2345 #endif
     2310
    23462311    case SC_HOTKEY:
    23472312    case SC_ARRANGE:
     
    27192684        point.x = LOWORD(lParam);
    27202685        point.y = HIWORD(lParam);
    2721         return HandleSysCommand(wParam, &point);
     2686        return HandleSysCommand(wParam,&point);
    27222687    }
    27232688
     
    30933058        window = parentwindow;
    30943059   }
    3095 }
    3096 //******************************************************************************
    3097 //******************************************************************************
    3098 BOOL Win32BaseWindow::SetMenu(HMENU hMenu)
    3099 {
    3100 
    3101     dprintf(("SetMenu %x", hMenu));
    3102     OS2HwndMenu = OSLibWinSetMenu(OS2HwndFrame, hMenu);
    3103     if(OS2HwndMenu == 0) {
    3104         dprintf(("Win32BaseWindow::SetMenu OS2HwndMenu == 0"));
    3105         return FALSE;
    3106     }
    3107     return TRUE;
    31083060}
    31093061//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.