Ignore:
Timestamp:
Oct 1, 1999, 5:53:32 PM (26 years ago)
Author:
cbratschi
Message:

trackbar: WM_ENABLE speed improved, hotkey: finished, animate: first work

File:
1 edited

Legend:

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

    r1048 r1100  
    1 /* $Id: hotkey.c,v 1.11 1999-09-25 15:24:12 cbratschi Exp $ */
     1/* $Id: hotkey.c,v 1.12 1999-10-01 15:53:32 cbratschi Exp $ */
    22/*
    33 * Hotkey control
     
    77 * Copyright 1999 Christoph Bratschi
    88 *
    9  * Status: Development in progress
     9 * Status: Complete (perhaps some bugs)
    1010 * Version: 5.00
    1111 */
     
    1919
    2020static VOID
    21 HOTKEY_Refresh(HWND hwnd)
     21HOTKEY_Refresh(HWND hwnd,BOOL notify)
    2222{
    2323  InvalidateRect(hwnd,NULL,FALSE);
    24 }
    25 
     24
     25  if (notify) SendMessageA(GetParent(hwnd),WM_COMMAND,MAKEWPARAM(GetWindowLongA(hwnd,GWL_ID),EN_CHANGE),hwnd);
     26}
     27
     28static char*
     29HOTKEY_ExtKey2Name(BYTE bVKHotKey)
     30{
     31  switch(bVKHotKey)
     32  {
     33    case VK_RETURN:
     34      return "RETURN";
     35
     36    case VK_PRIOR:
     37      return "PRIOR";
     38
     39    case VK_NEXT:
     40      return "NEXT";
     41
     42    case VK_END:
     43      return "END";
     44
     45    case VK_HOME:
     46      return "HOME";
     47
     48    case VK_LEFT:
     49      return "LEFT";
     50
     51    case VK_UP:
     52      return "UP";
     53
     54    case VK_RIGHT:
     55      return "RIGHT";
     56
     57    case VK_DOWN:
     58      return "DOWN";
     59
     60    case VK_HELP:
     61      return "HELP";
     62
     63    case VK_0:
     64      return "0";
     65
     66    case VK_1:
     67      return "1";
     68
     69    case VK_2:
     70      return "2";
     71
     72    case VK_3:
     73      return "3";
     74
     75    case VK_4:
     76      return "4";
     77
     78    case VK_5:
     79      return "5";
     80
     81    case VK_6:
     82      return "6";
     83
     84    case VK_7:
     85      return "7";
     86
     87    case VK_8:
     88      return "8";
     89
     90    case VK_9:
     91      return "9";
     92
     93    case VK_A:
     94      return "A";
     95
     96    case VK_B:
     97      return "B";
     98
     99    case VK_C:
     100      return "C";
     101
     102    case VK_D:
     103      return "D";
     104
     105    case VK_E:
     106      return "E";
     107
     108    case VK_F:
     109      return "F";
     110
     111    case VK_G:
     112      return "G";
     113
     114    case VK_H:
     115      return "H";
     116
     117    case VK_I:
     118      return "I";
     119
     120    case VK_J:
     121      return "J";
     122
     123    case VK_K:
     124      return "K";
     125
     126    case VK_L:
     127      return "L";
     128
     129    case VK_M:
     130      return "M";
     131
     132    case VK_N:
     133      return "N";
     134
     135    case VK_O:
     136      return "O";
     137
     138    case VK_P:
     139      return "P";
     140
     141    case VK_Q:
     142      return "Q";
     143
     144    case VK_R:
     145      return "R";
     146
     147    case VK_S:
     148      return "S";
     149
     150    case VK_T:
     151      return "T";
     152
     153    case VK_U:
     154      return "U";
     155
     156    case VK_V:
     157      return "V";
     158
     159    case VK_W:
     160      return "W";
     161
     162    case VK_X:
     163      return "Y";
     164
     165    case VK_Y:
     166      return "X";
     167
     168    case VK_Z:
     169      return "Z";
     170
     171    case VK_NUMPAD0:
     172      return "NUMPAD0";
     173
     174    case VK_NUMPAD1:
     175      return "NUMPAD1";
     176
     177    case VK_NUMPAD2:
     178      return "NUMPAD2";
     179
     180    case VK_NUMPAD3:
     181      return "NUMPAD3";
     182
     183    case VK_NUMPAD4:
     184      return "NUMPAD4";
     185
     186    case VK_NUMPAD5:
     187      return "NUMPAD5";
     188
     189    case VK_NUMPAD6:
     190      return "NUMPAD6";
     191
     192    case VK_NUMPAD7:
     193      return "NUMPAD7";
     194
     195    case VK_NUMPAD8:
     196      return "NUMPAD8";
     197
     198    case VK_NUMPAD9:
     199      return "NUMPAD9";
     200
     201    case VK_MULTIPLY:
     202      return "MULTIPLY";
     203
     204    case VK_ADD:
     205      return "ADD";
     206
     207    case VK_SEPARATOR:
     208      return "SEPARATOR";
     209
     210    case VK_SUBTRACT:
     211      return "SUBTRACT";
     212
     213    case VK_DECIMAL:
     214      return "DECIMAL";
     215
     216    case VK_DIVIDE:
     217      return "DIVIDE";
     218
     219    case VK_F1:
     220      return "F1";
     221
     222    case VK_F2:
     223      return "F2";
     224
     225    case VK_F3:
     226      return "F3";
     227
     228    case VK_F4:
     229      return "F4";
     230
     231    case VK_F5:
     232      return "F5";
     233
     234    case VK_F6:
     235      return "F6";
     236
     237    case VK_F7:
     238      return "F7";
     239
     240    case VK_F8:
     241      return "F8";
     242
     243    case VK_F9:
     244      return "F9";
     245
     246    case VK_F10:
     247      return "F10";
     248
     249    case VK_F11:
     250      return "F11";
     251
     252    case VK_F12:
     253      return "F12";
     254
     255    case VK_F13:
     256      return "F13";
     257
     258    case VK_F14:
     259      return "F14";
     260
     261    case VK_F15:
     262      return "F15";
     263
     264    case VK_F16:
     265      return "F16";
     266
     267    case VK_F17:
     268      return "F17";
     269
     270    case VK_F18:
     271      return "F18";
     272
     273    case VK_F19:
     274      return "F19";
     275
     276    case VK_F20:
     277      return "F20";
     278
     279    case VK_F21:
     280      return "F21";
     281
     282    case VK_F22:
     283      return "F22";
     284
     285    case VK_F23:
     286      return "F23";
     287
     288    case VK_F24:
     289      return "F24";
     290
     291    default:
     292      return NULL;
     293  }
     294}
    26295
    27296static BYTE
    28297HOTKEY_Check(HOTKEY_INFO *infoPtr,BYTE bfMods)
    29298{
    30   if ((infoPtr->fwCombInv & HKCOMB_A && bfMods == HOTKEYF_ALT) ||
    31       (infoPtr->fwCombInv & HKCOMB_C && bfMods == HOTKEYF_CONTROL) ||
    32       (infoPtr->fwCombInv & HKCOMB_CA && bfMods == HOTKEYF_CONTROL | HOTKEYF_ALT) ||
    33       (infoPtr->fwCombInv & HKCOMB_NONE && bfMods == 0) ||
    34       (infoPtr->fwCombInv & HKCOMB_S && bfMods == HOTKEYF_SHIFT) ||
    35       (infoPtr->fwCombInv & HKCOMB_SA && bfMods == HOTKEYF_SHIFT | HOTKEYF_ALT) ||
    36       (infoPtr->fwCombInv & HKCOMB_SC && bfMods == HOTKEYF_SHIFT | HOTKEYF_CONTROL) ||
    37       (infoPtr->fwCombInv & HKCOMB_SCA && bfMods == HOTKEYF_SHIFT | HOTKEYF_CONTROL | HOTKEYF_ALT))
    38     return infoPtr->fwModInv;
     299  BYTE mods = bfMods & ~HOTKEYF_EXT;
     300
     301  if ((infoPtr->fwCombInv & HKCOMB_A && mods == HOTKEYF_ALT) ||
     302      (infoPtr->fwCombInv & HKCOMB_C && mods == HOTKEYF_CONTROL) ||
     303      (infoPtr->fwCombInv & HKCOMB_CA && mods == HOTKEYF_CONTROL | HOTKEYF_ALT) ||
     304      (infoPtr->fwCombInv & HKCOMB_NONE && mods == 0) ||
     305      (infoPtr->fwCombInv & HKCOMB_S && mods == HOTKEYF_SHIFT) ||
     306      (infoPtr->fwCombInv & HKCOMB_SA && mods == HOTKEYF_SHIFT | HOTKEYF_ALT) ||
     307      (infoPtr->fwCombInv & HKCOMB_SC && mods == HOTKEYF_SHIFT | HOTKEYF_CONTROL) ||
     308      (infoPtr->fwCombInv & HKCOMB_SCA && mods == HOTKEYF_SHIFT | HOTKEYF_CONTROL | HOTKEYF_ALT))
     309    return infoPtr->fwModInv | bfMods;
    39310  else
    40311    return bfMods;
     
    50321  infoPtr->bfMods = HOTKEY_Check(infoPtr,(wParam & 0xFF00)>>8);
    51322
    52   HOTKEY_Refresh(hwnd);
     323  HOTKEY_Refresh(hwnd,TRUE);
    53324
    54325  return 0;
     
    75346
    76347  infoPtr->bfMods = HOTKEY_Check(infoPtr,infoPtr->bfMods);
    77   if (infoPtr->bfMods != oldMods) HOTKEY_Refresh(hwnd);
     348  if (infoPtr->bfMods != oldMods) HOTKEY_Refresh(hwnd,TRUE);
    78349
    79350  return 0;
     
    89360  {
    90361    infoPtr->bVKHotKey = wParam & 0xFF;
     362    infoPtr->bfMods &= ~HOTKEYF_EXT;
    91363    infoPtr->bfMods = HOTKEY_Check(infoPtr,infoPtr->bfMods);
    92     HOTKEY_Refresh(hwnd);
     364    HOTKEY_Refresh(hwnd,TRUE);
    93365  }
     366  infoPtr->bfModsDown = 0;
    94367
    95368  return 0;
     
    199472
    200473    default:
    201          //CB:
     474         if (newKey != wParam && HOTKEY_ExtKey2Name(wParam))
     475         {
     476           infoPtr ->bVKHotKey = wParam & 0xFF;
     477           newMods |= HOTKEYF_EXT;
     478
     479           infoPtr->bfMods = HOTKEY_Check(infoPtr,newMods);
     480           HOTKEY_Refresh(hwnd,TRUE);
     481           infoPtr->bfModsDown = 0;
     482
     483           return 0;
     484         }
    202485         break;
    203486    }
     
    208491      infoPtr->bVKHotKey = newKey;
    209492      infoPtr->bfMods = newMods;
    210       HOTKEY_Refresh(hwnd);
     493      HOTKEY_Refresh(hwnd,TRUE);
    211494    }
    212495
     
    218501HOTKEY_KeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam,BOOL sysKey)
    219502{
    220   HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
     503  HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(hwnd);
    221504  INT newMods = infoPtr->bfModsDown;
     505
     506  if (!infoPtr->bfModsDown) return 0;
    222507
    223508  if (sysKey)
     
    254539    {
    255540      infoPtr->bfMods = newMods;
    256       HOTKEY_Refresh(hwnd);
     541      HOTKEY_Refresh(hwnd,TRUE);
    257542    }
    258543
     
    319604  if (infoPtr->bVKHotKey)
    320605  {
    321     char char2[2];
    322 
    323     if (text[0]) strcat(text,"+");
    324     char2[0] = (char)infoPtr->bVKHotKey;
    325     char2[1] = 0;
    326     strcat(text,char2);
     606    if (infoPtr->bfMods & HOTKEYF_EXT)
     607    {
     608      char* name = HOTKEY_ExtKey2Name(infoPtr->bVKHotKey);
     609
     610      if (name)
     611      {
     612        if (text[0]) strcat(text,"+");
     613        strcat(text,name);
     614      }
     615    } else
     616    {
     617      char char2[2];
     618
     619      if (text[0]) strcat(text,"+");
     620      char2[0] = (char)infoPtr->bVKHotKey;
     621      char2[1] = 0;
     622      strcat(text,char2);
     623    }
    327624  } else if (infoPtr->bfModsDown) strcat(text,"+");
    328625  if(infoPtr->hFont) oldFont = SelectObject(hdc,infoPtr->hFont);
     
    391688    ReleaseDC (hwnd, hdc);
    392689
    393     if (LOWORD(lParam)) HOTKEY_Refresh(hwnd);
     690    if (LOWORD(lParam)) HOTKEY_Refresh(hwnd,FALSE);
    394691
    395692    return 0;
Note: See TracChangeset for help on using the changeset viewer.