home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2002 December (Special) / DOSV2002_12.iso / utility / tcl230ja95.lzh / source.lzh / dll / taskswitch.c < prev    next >
C/C++ Source or Header  |  2001-02-03  |  3KB  |  113 lines

  1. /*-------------------------------------------
  2.   taskswitch.c
  3.     Customize Task Switcher
  4.     Kazubon 1999
  5. ---------------------------------------------*/
  6. #include "tcdll.h"
  7.  
  8. #ifndef TCS_FLATBUTTONS
  9. #define TCS_FLATBUTTONS         0x0008
  10. #endif
  11. #ifndef TCS_HOTTRACK
  12. #define TCS_HOTTRACK            0x0040
  13. #endif
  14.  
  15. extern HANDLE hmod;
  16.  
  17. LRESULT CALLBACK WndProcTab(HWND, UINT, WPARAM, LPARAM);
  18. void EndTaskSwitch(void);
  19. static WNDPROC oldWndProcTab = NULL;
  20. static HWND hwndTab = NULL;
  21. static LONG oldstyle;
  22.  
  23. /*--------------------------------------------------
  24.    initialize
  25. ----------------------------------------------------*/
  26. void InitTaskSwitch(HWND hwndClock)
  27. {
  28.     HANDLE hwnd, hwndTaskSwitch;
  29.     char classname[80];
  30.     
  31.     EndTaskSwitch();
  32.     
  33.     if(!GetMyRegLong(NULL, "TaskSwitchFlat", FALSE))
  34.         return;
  35.     
  36.     // get window handle of MSTaskSwWClass
  37.     hwndTaskSwitch = NULL;
  38.     hwnd = GetParent(hwndClock);  // TrayNotifyWnd
  39.     hwnd = GetParent(hwnd);       // Shell_TrayWnd
  40.     if(hwnd == NULL) return;
  41.     hwnd = GetWindow(hwnd, GW_CHILD);
  42.     while(hwnd)
  43.     {
  44.         GetClassName(hwnd, classname, 80);
  45.         if(lstrcmpi(classname, "ReBarWindow32") == 0)
  46.         {
  47.             hwnd = GetWindow(hwnd, GW_CHILD);
  48.             while(hwnd)
  49.             {
  50.                 GetClassName(hwnd, classname, 80);
  51.                 if(lstrcmpi(classname, "MSTaskSwWClass") == 0)
  52.                 {
  53.                     hwndTaskSwitch = hwnd;
  54.                     break;
  55.                 }
  56.                 hwnd = GetWindow(hwnd, GW_HWNDNEXT);
  57.             }
  58.         }
  59.         else if(lstrcmpi(classname, "MSTaskSwWClass") == 0)
  60.         {
  61.             hwndTaskSwitch = hwnd;
  62.             break;
  63.         }
  64.         hwnd = GetWindow(hwnd, GW_HWNDNEXT);
  65.     }
  66.     if(hwndTaskSwitch == NULL)
  67.         return;
  68.     hwndTab = GetWindow(hwndTaskSwitch, GW_CHILD);
  69.     if(hwndTab == NULL)
  70.         return;
  71.     
  72.     oldstyle = GetWindowLong(hwndTab, GWL_STYLE);
  73.     SetWindowLong(hwndTab, GWL_STYLE, oldstyle|TCS_FLATBUTTONS|TCS_HOTTRACK);
  74.     
  75.     oldWndProcTab = (WNDPROC)GetWindowLong(hwndTab, GWL_WNDPROC);
  76.     SetWindowLong(hwndTab, GWL_WNDPROC, (LONG)WndProcTab);
  77. }
  78.  
  79. /*--------------------------------------------------
  80.     undo
  81. ----------------------------------------------------*/
  82. void EndTaskSwitch(void)
  83. {
  84.     if(hwndTab && IsWindow(hwndTab))
  85.     {
  86.         if(oldWndProcTab)
  87.             SetWindowLong(hwndTab, GWL_WNDPROC, (LONG)oldWndProcTab);
  88.         oldWndProcTab = NULL;
  89.         SetWindowLong(hwndTab, GWL_STYLE, oldstyle);
  90.     }
  91.     hwndTab = NULL;
  92. }
  93.  
  94. /*------------------------------------------------
  95.    subclass procedure of SysTabControl32
  96. --------------------------------------------------*/
  97. LRESULT CALLBACK WndProcTab(HWND hwnd, UINT message,
  98.     WPARAM wParam, LPARAM lParam)
  99. {
  100.     switch(message)
  101.     {
  102.         case TCM_SETITEMSIZE:
  103.             if(LOWORD(lParam)-8 >= 22)
  104.                 lParam = MAKELPARAM(LOWORD(lParam)-8, HIWORD(lParam));
  105.             break;
  106.         case TCM_INSERTITEM:
  107.             PostMessage(GetParent(hwnd), WM_SIZE, SIZE_RESTORED, 0);
  108.             break;
  109.     }
  110.     return CallWindowProc(oldWndProcTab, hwnd, message, wParam, lParam);
  111. }
  112.  
  113.