Ignore:
Timestamp:
Mar 18, 2000, 5:17:35 PM (25 years ago)
Author:
cbratschi
Message:

Corel 20000317 merge, ccbase finished, bug fixes

File:
1 edited

Legend:

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

    r2875 r3154  
    1 /* $Id: status.cpp,v 1.1 2000-02-23 17:09:48 cbratschi Exp $ */
     1/* $Id: status.cpp,v 1.2 2000-03-18 16:17:29 cbratschi Exp $ */
    22/*
    33 * Interface code to StatusWindow widget/control
     
    1414#include "commctrl.h"
    1515#include "comctl32.h"
     16#include "ccbase.h"
    1617#include "status.h"
    1718#include <string.h>
     
    4445#define TEXT_SPACE  3
    4546
    46 #define STATUSBAR_GetInfoPtr(hwnd) ((STATUSWINDOWINFO *)GetWindowLongA (hwnd, 0))
     47#define STATUSBAR_GetInfoPtr(hwnd) ((STATUSWINDOWINFO*)getInfoPtr(hwnd))
    4748
    4849
     
    489490
    490491    return 0;
    491 }
    492 
    493 
    494 static LRESULT
    495 STATUSBAR_GetUnicodeFormat (HWND hwnd)
    496 {
    497     STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
    498     return infoPtr->bUnicode;
    499492}
    500493
     
    793786    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
    794787
    795 //    TRACE (statusbar, "part %d: \"%s\"\n", (INT)wParam, (LPSTR)lParam);
    796788    if (infoPtr->hwndToolTip) {
    797789        TTTOOLINFOW ti;
     
    808800}
    809801
    810 
    811 static LRESULT
    812 STATUSBAR_SetUnicodeFormat (HWND hwnd, WPARAM wParam)
    813 {
    814     STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
    815     BOOL bTemp = infoPtr->bUnicode;
    816 
    817 //    TRACE (statusbar, "(0x%x)\n", (BOOL)wParam);
    818     infoPtr->bUnicode = (BOOL)wParam;
    819 
    820     return bTemp;
    821 }
    822 
    823 
    824802static LRESULT
    825803STATUSBAR_Simple (HWND hwnd, WPARAM wParam, LPARAM lParam)
     
    827805    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
    828806    HDC  hdc;
    829     NMHDR  nmhdr;
    830807
    831808    infoPtr->simple = (BOOL)wParam;
    832809
    833810    /* send notification */
    834     nmhdr.hwndFrom = hwnd;
    835     nmhdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
    836     nmhdr.code = SBN_SIMPLEMODECHANGE;
    837     SendMessageA (GetParent (hwnd), WM_NOTIFY, 0, (LPARAM)&nmhdr);
     811    sendNotify(hwnd,SBN_SIMPLEMODECHANGE);
    838812
    839813    hdc = GetDC (hwnd);
     
    855829    STATUSWINDOWINFO *infoPtr;
    856830
    857     infoPtr = (STATUSWINDOWINFO*)COMCTL32_Alloc (sizeof(STATUSWINDOWINFO));
    858     SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
     831    infoPtr = (STATUSWINDOWINFO*)initControl(hwnd,sizeof(STATUSWINDOWINFO));
    859832
    860833    infoPtr->numParts = 1;
     
    884857    infoPtr->parts[0].hIcon = 0;
    885858
    886     if (IsWindowUnicode (hwnd)) {
    887         infoPtr->bUnicode = TRUE;
    888         if (lpCreate->lpszName &&
    889             (len = lstrlenW ((LPCWSTR)lpCreate->lpszName))) {
    890             infoPtr->parts[0].text = (WCHAR*)COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
    891             lstrcpyW (infoPtr->parts[0].text, (LPCWSTR)lpCreate->lpszName);
    892         }
    893     }
    894     else {
    895         if (lpCreate->lpszName &&
    896             (len = lstrlenA ((LPCSTR)lpCreate->lpszName))) {
    897             infoPtr->parts[0].text = (WCHAR*)COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
    898             lstrcpyAtoW (infoPtr->parts[0].text, (char*)lpCreate->lpszName);
    899         }
     859    if (infoPtr->header.fUnicode)
     860    {
     861      if (lpCreate->lpszName && (len = lstrlenW ((LPCWSTR)lpCreate->lpszName)))
     862      {
     863        infoPtr->parts[0].text = (WCHAR*)COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
     864        lstrcpyW (infoPtr->parts[0].text, (LPCWSTR)lpCreate->lpszName);
     865      }
     866    } else
     867    {
     868      if (lpCreate->lpszName && (len = lstrlenA ((LPCSTR)lpCreate->lpszName)))
     869      {
     870        infoPtr->parts[0].text = (WCHAR*)COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
     871        lstrcpyAtoW (infoPtr->parts[0].text, (char*)lpCreate->lpszName);
     872      }
    900873    }
    901874
     
    912885    }
    913886
    914     if (GetWindowLongA (hwnd, GWL_STYLE) & SBT_TOOLTIPS) {
    915         infoPtr->hwndToolTip =
    916             CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0,
    917                                CW_USEDEFAULT, CW_USEDEFAULT,
    918                                CW_USEDEFAULT, CW_USEDEFAULT,
    919                              hwnd, 0,
    920                              GetWindowLongA (hwnd, GWL_HINSTANCE), NULL);
    921 
    922         if (infoPtr->hwndToolTip) {
    923             NMTOOLTIPSCREATED nmttc;
    924 
    925             nmttc.hdr.hwndFrom = hwnd;
    926             nmttc.hdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
    927             nmttc.hdr.code = NM_TOOLTIPSCREATED;
    928             nmttc.hwndToolTips = infoPtr->hwndToolTip;
    929 
    930             SendMessageA (GetParent (hwnd), WM_NOTIFY,
    931                             (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc);
    932         }
    933     }
     887    if (GetWindowLongA(hwnd,GWL_STYLE) & SBT_TOOLTIPS)
     888      infoPtr->hwndToolTip = createToolTip(hwnd,0,FALSE);
    934889
    935890    GetClientRect (GetParent (hwnd), &rect);
     
    948903STATUSBAR_WMDestroy (HWND hwnd)
    949904{
    950     STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     905    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
    951906    int i;
    952907
    953     for (i = 0; i < self->numParts; i++) {
    954         if (self->parts[i].text && !(self->parts[i].style & SBT_OWNERDRAW))
    955             COMCTL32_Free (self->parts[i].text);
    956     }
    957     if (self->part0.text && !(self->part0.style & SBT_OWNERDRAW))
    958         COMCTL32_Free (self->part0.text);
    959     COMCTL32_Free (self->parts);
     908    for (i = 0; i < infoPtr->numParts; i++) {
     909        if (infoPtr->parts[i].text && !(infoPtr->parts[i].style & SBT_OWNERDRAW))
     910            COMCTL32_Free (infoPtr->parts[i].text);
     911    }
     912    if (infoPtr->part0.text && !(infoPtr->part0.style & SBT_OWNERDRAW))
     913        COMCTL32_Free (infoPtr->part0.text);
     914    COMCTL32_Free (infoPtr->parts);
    960915
    961916    /* delete default font */
    962     if (self->hDefaultFont)
    963         DeleteObject (self->hDefaultFont);
     917    if (infoPtr->hDefaultFont)
     918        DeleteObject (infoPtr->hDefaultFont);
    964919
    965920    /* delete tool tip control */
    966     if (self->hwndToolTip)
    967         DestroyWindow (self->hwndToolTip);
    968 
    969     COMCTL32_Free (self);
     921    destroyToolTip(infoPtr->hwndToolTip);
     922
     923    doneControl(hwnd);
    970924
    971925    return 0;
     
    990944        return 0;
    991945    len = lstrlenW (infoPtr->parts[0].text);
    992     if (wParam > len) {
    993         if (infoPtr->bUnicode)
    994             lstrcpyW ((LPWSTR)lParam, infoPtr->parts[0].text);
    995         else
    996             lstrcpyWtoA ((LPSTR)lParam, infoPtr->parts[0].text);
    997         return len;
     946    if (wParam > len)
     947    {
     948      if (infoPtr->header.fUnicode)
     949        lstrcpyW ((LPWSTR)lParam, infoPtr->parts[0].text);
     950      else
     951        lstrcpyWtoA ((LPSTR)lParam, infoPtr->parts[0].text);
     952      return len;
    998953    }
    999954
     
    11091064        COMCTL32_Free (part->text);
    11101065    part->text = 0;
    1111     if (infoPtr->bUnicode) {
     1066    if (infoPtr->header.fUnicode) {
    11121067        if (lParam && (len = lstrlenW((LPCWSTR)lParam))) {
    11131068            part->text = (WCHAR*)COMCTL32_Alloc ((len+1)*sizeof(WCHAR));
     
    11601115}
    11611116
    1162 
    1163 static LRESULT
    1164 STATUSBAR_SendNotify (HWND hwnd, UINT code)
    1165 {
    1166     NMHDR  nmhdr;
    1167 
    1168     nmhdr.hwndFrom = hwnd;
    1169     nmhdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
    1170     nmhdr.code = code;
    1171     SendMessageA (GetParent (hwnd), WM_NOTIFY, 0, (LPARAM)&nmhdr);
    1172     return 0;
    1173 }
    1174 
    1175 
    1176 
    11771117static LRESULT WINAPI
    11781118StatusWindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
     
    12071147            return STATUSBAR_GetTipTextW (hwnd, wParam, lParam);
    12081148
    1209         case SB_GETUNICODEFORMAT:
    1210             return STATUSBAR_GetUnicodeFormat (hwnd);
    1211 
    12121149        case SB_ISSIMPLE:
    12131150            return STATUSBAR_IsSimple (hwnd);
     
    12371174            return STATUSBAR_SetTipTextW (hwnd, wParam, lParam);
    12381175
    1239         case SB_SETUNICODEFORMAT:
    1240             return STATUSBAR_SetUnicodeFormat (hwnd, wParam);
    1241 
    12421176        case SB_SIMPLE:
    12431177            return STATUSBAR_Simple (hwnd, wParam, lParam);
     
    12601194
    12611195        case WM_LBUTTONDBLCLK:
    1262             return STATUSBAR_SendNotify (hwnd, NM_DBLCLK);
     1196            return sendNotify(hwnd,NM_DBLCLK);
    12631197
    12641198        case WM_LBUTTONUP:
    1265             return STATUSBAR_SendNotify (hwnd, NM_CLICK);
     1199            return sendNotify(hwnd,NM_CLICK);
    12661200
    12671201        case WM_MOUSEMOVE:
     
    12811215
    12821216        case WM_RBUTTONDBLCLK:
    1283             return STATUSBAR_SendNotify (hwnd, NM_RDBLCLK);
     1217            return sendNotify(hwnd,NM_RDBLCLK);
    12841218
    12851219        case WM_RBUTTONUP:
    1286             return STATUSBAR_SendNotify (hwnd, NM_RCLICK);
     1220            return sendNotify(hwnd,NM_RCLICK);
    12871221
    12881222        case WM_SETFONT:
     
    12991233//              ERR (statusbar, "unknown msg %04x wp=%04x lp=%08lx\n",
    13001234//                   msg, wParam, lParam);
    1301             return DefWindowProcA (hwnd, msg, wParam, lParam);
     1235            return defComCtl32ProcA (hwnd, msg, wParam, lParam);
    13021236    }
    13031237    return 0;
     
    13151249{
    13161250    WNDCLASSA wndClass;
    1317 
    1318 //SvL: Don't check this now
    1319 //    if (GlobalFindAtomA (STATUSCLASSNAMEA)) return;
    13201251
    13211252    ZeroMemory (&wndClass, sizeof(WNDCLASSA));
     
    13411272STATUS_Unregister (VOID)
    13421273{
    1343     if (GlobalFindAtomA (STATUSCLASSNAMEA))
    1344         UnregisterClassA (STATUSCLASSNAMEA, (HINSTANCE)NULL);
    1345 }
    1346 
     1274    UnregisterClassA (STATUSCLASSNAMEA, (HINSTANCE)NULL);
     1275}
     1276
Note: See TracChangeset for help on using the changeset viewer.