Ignore:
Timestamp:
Nov 3, 1999, 11:05:23 PM (26 years ago)
Author:
cbratschi
Message:

size grip tracking

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/comctl32/status.c

    r1431 r1584  
    1 /* $Id: status.c,v 1.12 1999-10-24 22:49:46 sandervl Exp $ */
     1/* $Id: status.c,v 1.13 1999-11-03 22:05:23 cbratschi Exp $ */
    22/*
    33 * Interface code to StatusWindow widget/control
     
    4646#define STATUSBAR_GetInfoPtr(hwnd) ((STATUSWINDOWINFO *)GetWindowLongA (hwnd, 0))
    4747
     48
     49static RECT STATUSBAR_GetSizeBox(HWND hwnd)
     50{
     51  RECT rect;
     52
     53  GetClientRect(hwnd,&rect);
     54  rect.left = rect.right-GetSystemMetrics(SM_CXVSCROLL);
     55  rect.top  = rect.bottom-GetSystemMetrics(SM_CYHSCROLL);
     56
     57  return rect;
     58}
    4859
    4960static void
     
    488499}
    489500
     501static LRESULT
     502STATUSBAR_WMLButtonDown(HWND hwnd,WPARAM wParam,LPARAM lParam)
     503{
     504  DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE);
     505
     506  if (dwStyle & SBARS_SIZEGRIP && !(dwStyle & CCS_TOP))
     507  {
     508    RECT rect = STATUSBAR_GetSizeBox(hwnd);
     509    POINT point;
     510
     511    point.x = (SHORT)LOWORD(lParam);
     512    point.y = (SHORT)HIWORD(lParam);
     513    if (PtInRect(&rect,point)) TrackWin32Window(GetParent(hwnd),FALSE);
     514
     515    return 0;
     516  }
     517
     518  return DefWindowProcA(hwnd,WM_LBUTTONDOWN,wParam,lParam);
     519}
    490520
    491521static LRESULT
     
    840870    LPCREATESTRUCTA lpCreate = (LPCREATESTRUCTA)lParam;
    841871    NONCLIENTMETRICSA nclm;
    842     RECT        rect;
    843     int         width, len;
    844     HDC hdc;
     872    RECT        rect;
     873    int         width, len;
     874    HDC hdc;
    845875    STATUSWINDOWINFO *self;
    846876
     
    875905
    876906    if (IsWindowUnicode (hwnd)) {
    877         self->bUnicode = TRUE;
    878         if (lpCreate->lpszName &&
    879             (len = lstrlenW ((LPCWSTR)lpCreate->lpszName))) {
    880             self->parts[0].text = COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
    881             lstrcpyW (self->parts[0].text, (LPCWSTR)lpCreate->lpszName);
    882         }
     907        self->bUnicode = TRUE;
     908        if (lpCreate->lpszName &&
     909            (len = lstrlenW ((LPCWSTR)lpCreate->lpszName))) {
     910            self->parts[0].text = COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
     911            lstrcpyW (self->parts[0].text, (LPCWSTR)lpCreate->lpszName);
     912        }
    883913    }
    884914    else {
    885         if (lpCreate->lpszName &&
    886             (len = lstrlenA ((LPCSTR)lpCreate->lpszName))) {
    887             self->parts[0].text = COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
    888             lstrcpyAtoW (self->parts[0].text, (LPCSTR)lpCreate->lpszName);
    889         }
    890     }
    891 
    892     if ((hdc = GetDC (0))) {
    893         TEXTMETRICA tm;
    894         HFONT hOldFont;
    895 
    896         hOldFont = SelectObject (hdc,self->hDefaultFont);
    897         GetTextMetricsA(hdc, &tm);
    898         self->textHeight = tm.tmHeight;
    899         SelectObject (hdc, hOldFont);
    900         ReleaseDC(0, hdc);
     915        if (lpCreate->lpszName &&
     916            (len = lstrlenA ((LPCSTR)lpCreate->lpszName))) {
     917            self->parts[0].text = COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
     918            lstrcpyAtoW (self->parts[0].text, (char*)lpCreate->lpszName);
     919        }
     920    }
     921
     922    hdc = GetDC(0);
     923    if (hdc) {
     924        TEXTMETRICA tm;
     925        HFONT hOldFont;
     926
     927        hOldFont = SelectObject (hdc,self->hDefaultFont);
     928        GetTextMetricsA(hdc, &tm);
     929        self->textHeight = tm.tmHeight;
     930        SelectObject (hdc, hOldFont);
     931        ReleaseDC(0, hdc);
    901932    }
    902933
    903934    if (GetWindowLongA (hwnd, GWL_STYLE) & SBT_TOOLTIPS) {
    904         self->hwndToolTip =
    905             CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0,
    906                                CW_USEDEFAULT, CW_USEDEFAULT,
    907                                CW_USEDEFAULT, CW_USEDEFAULT,
    908                              hwnd, 0,
    909                              GetWindowLongA (hwnd, GWL_HINSTANCE), NULL);
    910 
    911         if (self->hwndToolTip) {
    912             NMTOOLTIPSCREATED nmttc;
    913 
    914             nmttc.hdr.hwndFrom = hwnd;
    915             nmttc.hdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
    916             nmttc.hdr.code = NM_TOOLTIPSCREATED;
    917             nmttc.hwndToolTips = self->hwndToolTip;
    918 
    919             SendMessageA (GetParent (hwnd), WM_NOTIFY,
    920                             (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc);
    921         }
     935        self->hwndToolTip =
     936            CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0,
     937                               CW_USEDEFAULT, CW_USEDEFAULT,
     938                               CW_USEDEFAULT, CW_USEDEFAULT,
     939                             hwnd, 0,
     940                             GetWindowLongA (hwnd, GWL_HINSTANCE), NULL);
     941
     942        if (self->hwndToolTip) {
     943            NMTOOLTIPSCREATED nmttc;
     944
     945            nmttc.hdr.hwndFrom = hwnd;
     946            nmttc.hdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
     947            nmttc.hdr.code = NM_TOOLTIPSCREATED;
     948            nmttc.hwndToolTips = self->hwndToolTip;
     949
     950            SendMessageA (GetParent (hwnd), WM_NOTIFY,
     951                            (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc);
     952        }
    922953    }
    923954
     
    926957    self->height = self->textHeight + 4 + VERT_BORDER;
    927958    MoveWindow (hwnd, lpCreate->x, lpCreate->y-1,
    928                   width, self->height, FALSE);
     959                  width, self->height, FALSE);
    929960    STATUSBAR_SetPartBounds (hwnd);
    930961
     
    9931024STATUSBAR_WMMouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
    9941025{
    995     STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     1026    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr(hwnd);
     1027    DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE);
     1028
     1029    if (dwStyle & SBARS_SIZEGRIP)
     1030    {
     1031      RECT rect = STATUSBAR_GetSizeBox(hwnd);
     1032      POINT point;
     1033
     1034      point.x = (SHORT)LOWORD(lParam);
     1035      point.y = (SHORT)HIWORD(lParam);
     1036      if (PtInRect(&rect,point)) SetCursor(LoadCursorA(0,IDC_SIZENWSEA));
     1037    }
    9961038
    9971039    if (infoPtr->hwndToolTip)
     
    12421284            return STATUSBAR_SendNotify (hwnd, NM_DBLCLK);
    12431285
     1286        case WM_LBUTTONDOWN:
     1287            return STATUSBAR_WMLButtonDown(hwnd,wParam,lParam);
     1288
    12441289        case WM_LBUTTONUP:
    12451290            return STATUSBAR_SendNotify (hwnd, NM_CLICK);
Note: See TracChangeset for help on using the changeset viewer.