home *** CD-ROM | disk | FTP | other *** search
- VOID SubclassTitleBar (
- HWND hwnd
- )
- {
- HWND hwndTB;
- PTBDATA pTBData;
-
-
- hwndTB = WinWindowFromID (hwnd, FID_TITLEBAR);
- pTBData = (PTBDATA) calloc (1, sizeof (TBDATA));
-
- WinSetWindowULong (hwndTB, QWL_USER, (ULONG)pTBData);
- pTBData->ulState = 1L;
- pTBData->pfnwpOld = WinSubclassWindow (hwndTB, TitleBarWinProc);
- }
-
-
-
- MRESULT EXPENTRY TitleBarWinProc (
- HWND hwnd,
- ULONG msg,
- MPARAM mp1,
- MPARAM mp2
- )
- {
- PTBDATA pTBData;
- MRESULT mr = (MRESULT) FALSE;
- ULONG ulState;
- ULONG ulNewState;
-
-
- pTBData = (PTBDATA) WinQueryWindowULong (hwnd, QWL_USER);
-
- switch (msg)
- {
- case TBM_QUERYHILITE :
-
- mr = (MRESULT) pTBData->ulState;
- break;
-
- case TBM_SETHILITE :
-
- mr = (MRESULT) TRUE;
- pTBData->ulState = (ULONG) SHORT1FROMMP (mp1);
- PaintTitleBar (hwnd, pTBData->ulState);
- break;
-
- case WM_PAINT :
-
- PaintTitleBar (hwnd, pTBData->ulState);
- break;
-
- case WM_DESTROY :
-
- free (pTBData);
- break;
-
- default :
-
- mr = (*pTBData->pfnwpOld) (hwnd, msg, mp1, mp2);
- break;
- }
-
- return (mr);
- }
-
-
- VOID PaintTitleBar (
- HWND hwnd,
- ULONG ulState
- )
- {
- HPS hps;
- RECTL rcl;
- CHAR szTitle[128];
-
-
- if (! WinIsWindowVisible (hwnd))
- return;
-
- hps = WinBeginPaint (hwnd, 0, 0);
-
- WinQueryWindowRect (hwnd, &rcl);
- WinFillRect (hps,
- &rcl,
- (ulState ? SYSCLR_ACTIVETITLE : SYSCLR_INACTIVETITLE));
-
- WinDrawBorder (hps,
- &rcl,
- 1L,
- 1L,
- SYSCLR_BUTTONDARK,
- SYSCLR_BUTTONLIGHT,
- DB_DEPRESSED);
-
- WinQueryWindowText (hwnd, 127, szTitle);
- rcl.xLeft += WinQuerySysValue (HWND_DESKTOP, SV_CXALIGN);
- rcl.xRight -= WinQuerySysValue (HWND_DESKTOP, SV_CXALIGN);
-
- WinDrawText (hps,
- -1,
- szTitle,
- &rcl,
- (ulState ?
- SYSCLR_ACTIVETITLETEXT :
- SYSCLR_INACTIVETITLETEXT),
- (ulState ?
- SYSCLR_ACTIVETITLETEXTBGND :
- SYSCLR_INACTIVETITLETEXTBGND),
- DT_LEFT | DT_VCENTER);
-
- WinEndPaint (hps);
- }
-