Changeset 1100 for trunk/src/comctl32/hotkey.c
- Timestamp:
- Oct 1, 1999, 5:53:32 PM (26 years ago)
- File:
-
- 1 edited
-
trunk/src/comctl32/hotkey.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/hotkey.c
r1048 r1100 1 /* $Id: hotkey.c,v 1.1 1 1999-09-25 15:24:12 cbratschi Exp $ */1 /* $Id: hotkey.c,v 1.12 1999-10-01 15:53:32 cbratschi Exp $ */ 2 2 /* 3 3 * Hotkey control … … 7 7 * Copyright 1999 Christoph Bratschi 8 8 * 9 * Status: Development in progress9 * Status: Complete (perhaps some bugs) 10 10 * Version: 5.00 11 11 */ … … 19 19 20 20 static VOID 21 HOTKEY_Refresh(HWND hwnd )21 HOTKEY_Refresh(HWND hwnd,BOOL notify) 22 22 { 23 23 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 28 static char* 29 HOTKEY_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 } 26 295 27 296 static BYTE 28 297 HOTKEY_Check(HOTKEY_INFO *infoPtr,BYTE bfMods) 29 298 { 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; 39 310 else 40 311 return bfMods; … … 50 321 infoPtr->bfMods = HOTKEY_Check(infoPtr,(wParam & 0xFF00)>>8); 51 322 52 HOTKEY_Refresh(hwnd );323 HOTKEY_Refresh(hwnd,TRUE); 53 324 54 325 return 0; … … 75 346 76 347 infoPtr->bfMods = HOTKEY_Check(infoPtr,infoPtr->bfMods); 77 if (infoPtr->bfMods != oldMods) HOTKEY_Refresh(hwnd );348 if (infoPtr->bfMods != oldMods) HOTKEY_Refresh(hwnd,TRUE); 78 349 79 350 return 0; … … 89 360 { 90 361 infoPtr->bVKHotKey = wParam & 0xFF; 362 infoPtr->bfMods &= ~HOTKEYF_EXT; 91 363 infoPtr->bfMods = HOTKEY_Check(infoPtr,infoPtr->bfMods); 92 HOTKEY_Refresh(hwnd );364 HOTKEY_Refresh(hwnd,TRUE); 93 365 } 366 infoPtr->bfModsDown = 0; 94 367 95 368 return 0; … … 199 472 200 473 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 } 202 485 break; 203 486 } … … 208 491 infoPtr->bVKHotKey = newKey; 209 492 infoPtr->bfMods = newMods; 210 HOTKEY_Refresh(hwnd );493 HOTKEY_Refresh(hwnd,TRUE); 211 494 } 212 495 … … 218 501 HOTKEY_KeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam,BOOL sysKey) 219 502 { 220 HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);503 HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(hwnd); 221 504 INT newMods = infoPtr->bfModsDown; 505 506 if (!infoPtr->bfModsDown) return 0; 222 507 223 508 if (sysKey) … … 254 539 { 255 540 infoPtr->bfMods = newMods; 256 HOTKEY_Refresh(hwnd );541 HOTKEY_Refresh(hwnd,TRUE); 257 542 } 258 543 … … 319 604 if (infoPtr->bVKHotKey) 320 605 { 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 } 327 624 } else if (infoPtr->bfModsDown) strcat(text,"+"); 328 625 if(infoPtr->hFont) oldFont = SelectObject(hdc,infoPtr->hFont); … … 391 688 ReleaseDC (hwnd, hdc); 392 689 393 if (LOWORD(lParam)) HOTKEY_Refresh(hwnd );690 if (LOWORD(lParam)) HOTKEY_Refresh(hwnd,FALSE); 394 691 395 692 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.
