示例#1
0
HRESULT CALLBACK TimeEditProc (HWND hEdit, UINT msg, WPARAM wp, LPARAM lp)
{
   TimeInfo *pti = NULL;

   EnterCriticalSection (&csTime);

   for (size_t iTime = 0; !pti && iTime < cTime; ++iTime)
      {
      if ( (aTime[ iTime ].hHours   == hEdit) ||
           (aTime[ iTime ].hMinutes == hEdit) ||
           ((!aTime[ iTime ].f24Hour) && (aTime[ iTime ].hAMPM == hEdit)) )
         {
         pti = &aTime[ iTime ];
         }
      }

   LeaveCriticalSection (&csTime);

   if (pti)
      {
      switch (msg)
         {
         case WM_SETFOCUS:
            Time_Edit_OnSetFocus (pti, hEdit);
            break;
         }
      }

   PVOID oldProc = Subclass_FindNextHook (hEdit, TimeEditProc);
   if (oldProc)
      return CallWindowProc ((WNDPROC)oldProc, hEdit, msg, wp, lp);
   else
      return DefWindowProc (hEdit, msg, wp, lp);
}
示例#2
0
HRESULT CALLBACK ElapsedEditProc (HWND hEdit, UINT msg, WPARAM wp, LPARAM lp)
{
   ElapsedInfo *pei = NULL;

   EnterCriticalSection (&csElapsed);

   for (size_t iElapsed = 0; !pei && iElapsed < cElapsed; ++iElapsed)
      {
      if ( (aElapsed[ iElapsed ].hHours   == hEdit) ||
           (aElapsed[ iElapsed ].hMinutes == hEdit) ||
           (aElapsed[ iElapsed ].hSeconds == hEdit) )
         {
         pei = &aElapsed[ iElapsed ];
         }
      }

   LeaveCriticalSection (&csElapsed);

   if (pei)
      {
      switch (msg)
         {
         case WM_SETFOCUS:
            Elapsed_Edit_OnSetFocus (pei, hEdit);
            break;
         }
      }

   PVOID oldProc = Subclass_FindNextHook (hEdit, ElapsedEditProc);
   if (oldProc)
      return CallWindowProc ((WNDPROC)oldProc, hEdit, msg, wp, lp);
   else
      return DefWindowProc (hEdit, msg, wp, lp);
}
示例#3
0
HRESULT CALLBACK Resize_DialogProc (HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
   PVOID fnNext = Subclass_FindNextHook (hWnd, Resize_DialogProc);

   switch (msg)
      {
      case WM_GETMINMAXINFO:
         LONG cxMin;
         LONG cyMin;
         LONG cxMax;
         LONG cyMax;
         FindResizeLimits (hWnd, &cxMin, &cxMax, &cyMin, &cyMax);

         LPMINMAXINFO lpmmi;
         lpmmi = (LPMINMAXINFO)lp;

         if (cxMin)
            lpmmi->ptMinTrackSize.x = cxMin;
         if (cyMin)
            lpmmi->ptMinTrackSize.y = cyMin;
         if (cxMax)
            lpmmi->ptMaxTrackSize.x = cxMax;
         if (cyMax)
            lpmmi->ptMaxTrackSize.y = cyMax;
         return FALSE;

      case WM_DESTROY:
         rwFindAndRemoveWnd (hWnd);
         break;
      }

   return (fnNext) ? CallWindowProc ((WNDPROC)fnNext, hWnd, msg, wp, lp) : FALSE;
}
示例#4
0
HRESULT CALLBACK WIZARD::Background_PaintHook (HWND hBkg, UINT msg, WPARAM wp, LPARAM lp)
{
   PVOID oldProc = Subclass_FindNextHook (hBkg, WIZARD::Background_PaintHook);

   switch (msg)
      {
      case WM_PAINT:
         LPWIZARD pWiz;
         if ((pWiz = WIZARD::GetWizard (hBkg)) != NULL)
            {
            if (pWiz->Background_OnPaint())
               return TRUE;
            }
         break;

      case WM_DESTROY:
         Subclass_RemoveHook (hBkg, WIZARD::Background_PaintHook);
         break;
      }

   if (oldProc)
      return CallWindowProc ((WNDPROC)oldProc, hBkg, msg, wp, lp);
   else
      return DefWindowProc (hBkg, msg, wp, lp);
}
示例#5
0
HRESULT CALLBACK WIZARD::Template_LeftPaneHook (HWND hLHS, UINT msg, WPARAM wp, LPARAM lp)
{
   PVOID oldProc = Subclass_FindNextHook (hLHS, WIZARD::Template_LeftPaneHook);

   switch (msg)
      {
      case WM_PAINT:
         LPWIZARD pWiz;
         if ((pWiz = WIZARD::GetWizard (GetParent (hLHS))) != NULL)
            {
            if (pWiz->Template_OnPaintLHS (hLHS))
               return TRUE;
            }
         break;

      case WM_DESTROY:
         Subclass_RemoveHook (hLHS, WIZARD::Template_LeftPaneHook);
         break;
      }

   if (oldProc)
      return (BOOL)CallWindowProc ((WNDPROC)oldProc, hLHS, msg, wp, lp);
   else
      return (BOOL)DefWindowProc (hLHS, msg, wp, lp);
}
示例#6
0
文件: window.cpp 项目: bagdxk/openafs
LRESULT CALLBACK Main_TabHookProc (HWND hTab, UINT msg, WPARAM wp, LPARAM lp)
{
   LRESULT rc = CallWindowProc ((WNDPROC)Subclass_FindNextHook (hTab, Main_TabHookProc), hTab, msg, wp, lp);

   switch (msg)
      {
      // Since this is a subclass proc, it's not around when the window
      // is created.  Any WM_CREATE processing we'd ordinarily do here
      // must therefore be done at the point where the tab control is
      // subclassed.
      //
      // case WM_CREATE:

      case WM_SIZE:
         if (lp != 0)
            ResizeWindow (hTab, awdTabChild, rwaFixupGuts);
         break;

      case WM_DESTROY:
         Subclass_RemoveHook (hTab, Main_TabHookProc);
         break;
      }

   return rc;
}
示例#7
0
/*
 * WndProc for our subclass of the wizard's dialog.  We do this to detect
 * the WM_ACTIVATEAPP message, which we use as a trigger to refresh the
 * partition info that we display.
 */
static BOOL CALLBACK WizardDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if ((g_pWiz->GetState() == sidSTEP_EIGHT) && (uMsg == WM_ACTIVATEAPP) && wParam) {
	UpdateDriveList();
	ShowPartitionInfo();
    }

    return CallWindowProc((WNDPROC)Subclass_FindNextHook(hwndDlg, WizardDlgProc), hwndDlg, uMsg, wParam, lParam);
}
示例#8
0
HRESULT CALLBACK ElapsedDlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
   PVOID oldProc = Subclass_FindNextHook (hDlg, ElapsedDlgProc);
   size_t iElapsed;

   switch (msg)
      {
      case WM_CTLCOLOREDIT:
      case WM_CTLCOLORSTATIC:
         for (iElapsed = 0; iElapsed < cElapsed; ++iElapsed)
            {
            if (aElapsed[ iElapsed ].hElapsed == NULL)
               continue;
            if ( (aElapsed[ iElapsed ].hHours   == (HWND)lp) ||
                 (aElapsed[ iElapsed ].hSep1    == (HWND)lp) ||
                 (aElapsed[ iElapsed ].hMinutes == (HWND)lp) ||
                 (aElapsed[ iElapsed ].hSep2    == (HWND)lp) ||
                 (aElapsed[ iElapsed ].hSeconds == (HWND)lp) )
               {
               COLORREF clr;
               if (IsWindowEnabled (aElapsed[ iElapsed ].hElapsed))
                  clr = GetSysColor (COLOR_WINDOW);
               else
                  clr = GetSysColor (COLOR_BTNFACE);
               SetBkColor ((HDC)wp, clr);
               return (HRESULT)(INT_PTR)CreateSolidBrush (clr);
               }
            }
         break;

      case WM_COMMAND:
         for (iElapsed = 0; iElapsed < cElapsed; ++iElapsed)
            {
            if (aElapsed[ iElapsed ].hElapsed == NULL)
               continue;
            if ( (aElapsed[ iElapsed ].idHours   == LOWORD(wp)) ||
                 (aElapsed[ iElapsed ].idMinutes == LOWORD(wp)) ||
                 (aElapsed[ iElapsed ].idSeconds == LOWORD(wp)) )
               {
               if (HIWORD(wp) == SPN_UPDATE)
                  {
                  Elapsed_Edit_OnUpdate (&aElapsed[ iElapsed ], GetDlgItem (hDlg, LOWORD(wp)), (DWORD)lp);
                  }
               break;
               }
            }
         break;
      }

   if (oldProc)
      return CallWindowProc ((WNDPROC)oldProc, hDlg, msg, wp, lp);
   else
      return DefWindowProc (hDlg, msg, wp, lp);
}
示例#9
0
HRESULT CALLBACK SockAddrEditProc (HWND hEdit, UINT msg, WPARAM wp, LPARAM lp)
{
   SockAddrInfo *psai = NULL;

   EnterCriticalSection (&csSockAddr);

   for (size_t iSockAddr = 0; !psai && iSockAddr < cSockAddr; ++iSockAddr)
      {
      if ( (aSockAddr[ iSockAddr ].hE1 == hEdit) ||
           (aSockAddr[ iSockAddr ].hE2 == hEdit) ||
           (aSockAddr[ iSockAddr ].hE3 == hEdit) ||
           (aSockAddr[ iSockAddr ].hE4 == hEdit) )
         {
         psai = &aSockAddr[ iSockAddr ];
         }
      }

   LeaveCriticalSection (&csSockAddr);

   if (psai)
      {
      switch (msg)
         {
         case WM_KILLFOCUS:
            SockAddr_Edit_SetText (psai, hEdit);
            break;

         case WM_CHAR:
            if (wp == TEXT('.'))
               {
               // advance to the next field
               PostMessage (GetParent(hEdit), WM_NEXTDLGCTL, 0, 0);
               return FALSE;
               }
            break;
         }
      }

   PVOID oldProc = Subclass_FindNextHook (hEdit, SockAddrEditProc);
   if (oldProc)
      return CallWindowProc ((WNDPROC)oldProc, hEdit, msg, wp, lp);
   else
      return DefWindowProc (hEdit, msg, wp, lp);
}
示例#10
0
HRESULT CALLBACK TimeDlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
   PVOID oldProc = Subclass_FindNextHook (hDlg, TimeDlgProc);
   size_t iTime;

   switch (msg)
      {
      case WM_CTLCOLOREDIT:
      case WM_CTLCOLORSTATIC:
      case WM_CTLCOLORLISTBOX:
         for (iTime = 0; iTime < cTime; ++iTime)
            {
            if (aTime[ iTime ].hTime == NULL)
               continue;
            if ( (aTime[ iTime ].hHours   == (HWND)lp) ||
                 (aTime[ iTime ].hSep1    == (HWND)lp) ||
                 (aTime[ iTime ].hMinutes == (HWND)lp) ||
                 ((!aTime[ iTime ].f24Hour) && (aTime[ iTime ].hSep2 == (HWND)lp)) ||
                 ((!aTime[ iTime ].f24Hour) && (aTime[ iTime ].hAMPM == (HWND)lp)) )
               {
               COLORREF clr;
               if (IsWindowEnabled (aTime[ iTime ].hTime))
                  clr = GetSysColor (COLOR_WINDOW);
               else
                  clr = GetSysColor (COLOR_BTNFACE);
               SetBkColor ((HDC)wp, clr);
               return (HRESULT)(INT_PTR)CreateSolidBrush (clr);
               }
            }
         break;

      case WM_MEASUREITEM: 
         LPMEASUREITEMSTRUCT lpmis;
         lpmis = (LPMEASUREITEMSTRUCT)lp; 
         HDC hdc;
         hdc = GetDC (hDlg);
         SIZE sAMPM;
         Time_GetAMPMSize (hdc, &sAMPM, NULL, NULL);
         ReleaseDC (hDlg, hdc);
         lpmis->itemHeight = sAMPM.cy;
         return TRUE; 

      case WM_DRAWITEM: 
         LPDRAWITEMSTRUCT lpdis;
         lpdis = (LPDRAWITEMSTRUCT)lp; 

         COLORREF clrBack;
         COLORREF clrFore;
         if (!IsWindowEnabled (lpdis->hwndItem))
            {
            clrBack = GetSysColor (COLOR_BTNFACE);
            clrFore = GetSysColor (COLOR_GRAYTEXT);
            }
         else if ((lpdis->itemState & ODS_SELECTED) && (GetFocus() == lpdis->hwndItem))
            {
            clrBack = GetSysColor (COLOR_HIGHLIGHT);
            clrFore = GetSysColor (COLOR_HIGHLIGHTTEXT);
            }
         else
            {
            clrBack = GetSysColor (COLOR_WINDOW);
            clrFore = GetSysColor (COLOR_BTNTEXT);
            }

         TCHAR szText[ cchRESOURCE ];
         SendMessage (lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, (LPARAM)szText); 

         SetTextColor (lpdis->hDC, clrFore);
         SetBkColor (lpdis->hDC, clrBack);
         SetBkMode (lpdis->hDC, OPAQUE);
         TextOut (lpdis->hDC, 0, lpdis->rcItem.top, szText, lstrlen(szText));
         return TRUE;

      case WM_COMMAND:
         for (iTime = 0; iTime < cTime; ++iTime)
            {
            if (aTime[ iTime ].hTime == NULL)
               continue;
            if ( (aTime[ iTime ].idHours   == LOWORD(wp)) ||
                 (aTime[ iTime ].idMinutes == LOWORD(wp)) ||
                 ((!aTime[ iTime ].f24Hour) && (aTime[ iTime ].idAMPM == LOWORD(wp))) )
               {
               if (HIWORD(wp) == SPN_UPDATE)
                  {
                  Time_Edit_OnUpdate (&aTime[ iTime ], GetDlgItem(hDlg,LOWORD(wp)));
                  }
               break;
               }
            }
         break;
      }

   if (oldProc)
      return CallWindowProc ((WNDPROC)oldProc, hDlg, msg, wp, lp);
   else
      return DefWindowProc (hDlg, msg, wp, lp);
}
示例#11
0
HRESULT CALLBACK SockAddrDlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
   PVOID oldProc = Subclass_FindNextHook (hDlg, SockAddrDlgProc);
   size_t iSockAddr;

   switch (msg)
      {
      case WM_CTLCOLOREDIT:
      case WM_CTLCOLORSTATIC:
         for (iSockAddr = 0; iSockAddr < cSockAddr; ++iSockAddr)
            {
            if (aSockAddr[ iSockAddr ].hSockAddr == NULL)
               continue;
            if ( (aSockAddr[ iSockAddr ].hE1   == (HWND)lp) ||
                 (aSockAddr[ iSockAddr ].hSep1 == (HWND)lp) ||
                 (aSockAddr[ iSockAddr ].hE2   == (HWND)lp) ||
                 (aSockAddr[ iSockAddr ].hSep2 == (HWND)lp) ||
                 (aSockAddr[ iSockAddr ].hE3   == (HWND)lp) ||
                 (aSockAddr[ iSockAddr ].hSep3 == (HWND)lp) ||
                 (aSockAddr[ iSockAddr ].hE4   == (HWND)lp) )
               {
               COLORREF clr;
               if (IsWindowEnabled (aSockAddr[ iSockAddr ].hSockAddr))
                  clr = GetSysColor (COLOR_WINDOW);
               else
                  clr = GetSysColor (COLOR_BTNFACE);
               SetBkColor ((HDC)wp, clr);
               return (HRESULT)(INT_PTR)CreateSolidBrush (clr);
               }
            }
         break;

      case WM_COMMAND:
         for (iSockAddr = 0; iSockAddr < cSockAddr; ++iSockAddr)
            {
            if (aSockAddr[ iSockAddr ].hSockAddr == NULL)
               continue;
            if ( (aSockAddr[ iSockAddr ].idE1 == LOWORD(wp)) ||
                 (aSockAddr[ iSockAddr ].idE2 == LOWORD(wp)) ||
                 (aSockAddr[ iSockAddr ].idE3 == LOWORD(wp)) ||
                 (aSockAddr[ iSockAddr ].idE4 == LOWORD(wp)) )
               {
               static BOOL fInHere = FALSE;
               if (!fInHere)
                  {
                  fInHere = TRUE;

                  if (HIWORD(wp) == EN_CHANGE)
                     {
                     SockAddr_Edit_OnChange (&aSockAddr[ iSockAddr ], GetDlgItem (hDlg, LOWORD(wp)));
                     }
                  else if (HIWORD(wp) == EN_UPDATE)
                     {
                     SockAddr_Edit_OnUpdate (&aSockAddr[ iSockAddr ], GetDlgItem (hDlg, LOWORD(wp)));
                     }

                  fInHere = FALSE;
                  }
               break;
               }
            }
         break;
      }

   if (oldProc)
      return CallWindowProc ((WNDPROC)oldProc, hDlg, msg, wp, lp);
   else
      return DefWindowProc (hDlg, msg, wp, lp);
}