diff options
Diffstat (limited to 'src/Mount/Hotkeys.c')
-rw-r--r-- | src/Mount/Hotkeys.c | 94 |
1 files changed, 48 insertions, 46 deletions
diff --git a/src/Mount/Hotkeys.c b/src/Mount/Hotkeys.c index 96f9abcd..c0829602 100644 --- a/src/Mount/Hotkeys.c +++ b/src/Mount/Hotkeys.c | |||
@@ -13,6 +13,8 @@ | |||
13 | #include "Mount.h" | 13 | #include "Mount.h" |
14 | #include "Resource.h" | 14 | #include "Resource.h" |
15 | 15 | ||
16 | #include <Strsafe.h> | ||
17 | |||
16 | #define MAX_KEY_COMB_NAME_LEN 260 | 18 | #define MAX_KEY_COMB_NAME_LEN 260 |
17 | 19 | ||
18 | TCHOTKEY Hotkeys [NBR_HOTKEYS]; | 20 | TCHOTKEY Hotkeys [NBR_HOTKEYS]; |
@@ -46,56 +48,56 @@ BOOL GetKeyName (UINT vKey, wchar_t *keyName) | |||
46 | if (vKey >= 0x30 && vKey <= 0x5a) | 48 | if (vKey >= 0x30 && vKey <= 0x5a) |
47 | { | 49 | { |
48 | // ASCII characters | 50 | // ASCII characters |
49 | wsprintfW (keyName, L"%hc", (char) vKey); | 51 | StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%hc", (char) vKey); |
50 | } | 52 | } |
51 | else if (vKey >= 0xE9 && vKey <= 0xF5) | 53 | else if (vKey >= 0xE9 && vKey <= 0xF5) |
52 | { | 54 | { |
53 | // OEM-specific | 55 | // OEM-specific |
54 | wsprintfW (keyName, L"OEM-%d", vKey); | 56 | StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM-%d", vKey); |
55 | } | 57 | } |
56 | else if (vKey >= VK_F1 && vKey <= VK_F24) | 58 | else if (vKey >= VK_F1 && vKey <= VK_F24) |
57 | { | 59 | { |
58 | // F1-F24 | 60 | // F1-F24 |
59 | wsprintfW (keyName, L"F%d", vKey - VK_F1 + 1); | 61 | StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"F%d", vKey - VK_F1 + 1); |
60 | } | 62 | } |
61 | else if (vKey >= VK_NUMPAD0 && vKey <= VK_NUMPAD9) | 63 | else if (vKey >= VK_NUMPAD0 && vKey <= VK_NUMPAD9) |
62 | { | 64 | { |
63 | // Numpad numbers | 65 | // Numpad numbers |
64 | wsprintfW (keyName, L"%s %d", GetString ("VK_NUMPAD"), vKey - VK_NUMPAD0); | 66 | StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s %d", GetString ("VK_NUMPAD"), vKey - VK_NUMPAD0); |
65 | } | 67 | } |
66 | else | 68 | else |
67 | { | 69 | { |
68 | switch (vKey) | 70 | switch (vKey) |
69 | { | 71 | { |
70 | case VK_MULTIPLY: wsprintfW (keyName, L"%s *", GetString ("VK_NUMPAD")); break; | 72 | case VK_MULTIPLY: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s *", GetString ("VK_NUMPAD")); break; |
71 | case VK_ADD: wsprintfW (keyName, L"%s +", GetString ("VK_NUMPAD")); break; | 73 | case VK_ADD: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s +", GetString ("VK_NUMPAD")); break; |
72 | case VK_SEPARATOR: wsprintfW (keyName, L"%s Separator", GetString ("VK_NUMPAD")); break; | 74 | case VK_SEPARATOR: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s Separator", GetString ("VK_NUMPAD")); break; |
73 | case VK_SUBTRACT: wsprintfW (keyName, L"%s -", GetString ("VK_NUMPAD")); break; | 75 | case VK_SUBTRACT: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s -", GetString ("VK_NUMPAD")); break; |
74 | case VK_DECIMAL: wsprintfW (keyName, L"%s .", GetString ("VK_NUMPAD")); break; | 76 | case VK_DECIMAL: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s .", GetString ("VK_NUMPAD")); break; |
75 | case VK_DIVIDE: wsprintfW (keyName, L"%s /", GetString ("VK_NUMPAD")); break; | 77 | case VK_DIVIDE: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s /", GetString ("VK_NUMPAD")); break; |
76 | case VK_OEM_1: wcscpy (keyName, L"OEM 1 (';')"); break; | 78 | case VK_OEM_1: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 1 (';')"); break; |
77 | case VK_OEM_PLUS: wcscpy (keyName, L"+"); break; | 79 | case VK_OEM_PLUS: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"+"); break; |
78 | case VK_OEM_COMMA: wcscpy (keyName, L","); break; | 80 | case VK_OEM_COMMA: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L","); break; |
79 | case VK_OEM_MINUS: wcscpy (keyName, L"-"); break; | 81 | case VK_OEM_MINUS: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"-"); break; |
80 | case VK_OEM_PERIOD: wcscpy (keyName, L"."); break; | 82 | case VK_OEM_PERIOD: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"."); break; |
81 | case VK_OEM_2: wcscpy (keyName, L"OEM 2 ('/')"); break; | 83 | case VK_OEM_2: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 2 ('/')"); break; |
82 | case VK_OEM_3: wcscpy (keyName, L"OEM 3 (`)"); break; | 84 | case VK_OEM_3: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 3 (`)"); break; |
83 | case VK_OEM_4: wcscpy (keyName, L"OEM 4 ('[')"); break; | 85 | case VK_OEM_4: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 4 ('[')"); break; |
84 | case VK_OEM_5: wcscpy (keyName, L"OEM 5 ('\\')"); break; | 86 | case VK_OEM_5: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 5 ('\\')"); break; |
85 | case VK_OEM_6: wcscpy (keyName, L"OEM 6 (']')"); break; | 87 | case VK_OEM_6: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 6 (']')"); break; |
86 | case VK_OEM_7: wcscpy (keyName, L"OEM 7 (')"); break; | 88 | case VK_OEM_7: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 7 (')"); break; |
87 | case VK_OEM_8: wcscpy (keyName, L"OEM 8"); break; | 89 | case VK_OEM_8: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 8"); break; |
88 | case VK_OEM_AX: wcscpy (keyName, L"OEM AX"); break; | 90 | case VK_OEM_AX: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM AX"); break; |
89 | case VK_OEM_102: wcscpy (keyName, L"OEM 102"); break; | 91 | case VK_OEM_102: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 102"); break; |
90 | case VK_ICO_HELP: wcscpy (keyName, L"ICO_HELP"); break; | 92 | case VK_ICO_HELP: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ICO_HELP"); break; |
91 | case VK_ICO_00: wcscpy (keyName, L"ICO_00"); break; | 93 | case VK_ICO_00: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ICO_00"); break; |
92 | case VK_ICO_CLEAR: wcscpy (keyName, L"ICO_CLEAR"); break; | 94 | case VK_ICO_CLEAR: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ICO_CLEAR"); break; |
93 | case VK_ATTN: wcscpy (keyName, L"Attn"); break; | 95 | case VK_ATTN: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"Attn"); break; |
94 | case VK_CRSEL: wcscpy (keyName, L"CrSel"); break; | 96 | case VK_CRSEL: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"CrSel"); break; |
95 | case VK_EXSEL: wcscpy (keyName, L"ExSel"); break; | 97 | case VK_EXSEL: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ExSel"); break; |
96 | case VK_EREOF: wcscpy (keyName, L"Erase EOF"); break; | 98 | case VK_EREOF: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"Erase EOF"); break; |
97 | case VK_PA1: wcscpy (keyName, L"PA1"); break; | 99 | case VK_PA1: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"PA1"); break; |
98 | case VK_OEM_CLEAR: wcscpy (keyName, L"OEM Clear"); break; | 100 | case VK_OEM_CLEAR: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM Clear"); break; |
99 | 101 | ||
100 | case 0: | 102 | case 0: |
101 | case 1: | 103 | case 1: |
@@ -107,12 +109,12 @@ BOOL GetKeyName (UINT vKey, wchar_t *keyName) | |||
107 | { | 109 | { |
108 | char key[16]; | 110 | char key[16]; |
109 | wchar_t *desc; | 111 | wchar_t *desc; |
110 | sprintf (key, "VKEY_%02X", vKey); | 112 | StringCbPrintfA (key, sizeof(key),"VKEY_%02X", vKey); |
111 | desc = GetString (key); | 113 | desc = GetString (key); |
112 | if (desc == UnknownString) | 114 | if (desc == UnknownString) |
113 | result = FALSE; | 115 | result = FALSE; |
114 | else | 116 | else |
115 | wcsncpy (keyName, desc, MAX_KEY_COMB_NAME_LEN); | 117 | StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, desc); |
116 | } | 118 | } |
117 | } | 119 | } |
118 | } | 120 | } |
@@ -226,36 +228,36 @@ static void DisplayHotkeyList (HWND hwndDlg) | |||
226 | SendMessageW (hList,LVM_INSERTITEMW,0,(LPARAM)&item); | 228 | SendMessageW (hList,LVM_INSERTITEMW,0,(LPARAM)&item); |
227 | 229 | ||
228 | item.iSubItem = 1; | 230 | item.iSubItem = 1; |
229 | wcscpy (Shortcut, L""); | 231 | Shortcut[0] = 0; |
230 | wcscpy (ShortcutMod, L""); | 232 | ShortcutMod[0] = 0; |
231 | 233 | ||
232 | if (GetKeyName (tmpHotkeys[i].vKeyCode, Shortcut)) | 234 | if (GetKeyName (tmpHotkeys[i].vKeyCode, Shortcut)) |
233 | { | 235 | { |
234 | if (tmpHotkeys[i].vKeyModifiers & MOD_CONTROL) | 236 | if (tmpHotkeys[i].vKeyModifiers & MOD_CONTROL) |
235 | { | 237 | { |
236 | wcscat (ShortcutMod, GetString ("VK_CONTROL")); | 238 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_CONTROL")); |
237 | wcscat (ShortcutMod, L"+"); | 239 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+"); |
238 | } | 240 | } |
239 | 241 | ||
240 | if (tmpHotkeys[i].vKeyModifiers & MOD_SHIFT) | 242 | if (tmpHotkeys[i].vKeyModifiers & MOD_SHIFT) |
241 | { | 243 | { |
242 | wcscat (ShortcutMod, GetString ("VK_SHIFT")); | 244 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_SHIFT")); |
243 | wcscat (ShortcutMod, L"+"); | 245 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+"); |
244 | } | 246 | } |
245 | 247 | ||
246 | if (tmpHotkeys[i].vKeyModifiers & MOD_ALT) | 248 | if (tmpHotkeys[i].vKeyModifiers & MOD_ALT) |
247 | { | 249 | { |
248 | wcscat (ShortcutMod, GetString ("VK_ALT")); | 250 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_ALT")); |
249 | wcscat (ShortcutMod, L"+"); | 251 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+"); |
250 | } | 252 | } |
251 | 253 | ||
252 | if (tmpHotkeys[i].vKeyModifiers & MOD_WIN) | 254 | if (tmpHotkeys[i].vKeyModifiers & MOD_WIN) |
253 | { | 255 | { |
254 | wcscat (ShortcutMod, GetString ("VK_WIN")); | 256 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_WIN")); |
255 | wcscat (ShortcutMod, L"+"); | 257 | StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+"); |
256 | } | 258 | } |
257 | 259 | ||
258 | wsprintfW (ShortcutFinal, L"%s%s", ShortcutMod, Shortcut); | 260 | StringCbPrintfW (ShortcutFinal, sizeof(ShortcutFinal), L"%s%s", ShortcutMod, Shortcut); |
259 | item.pszText = ShortcutFinal; | 261 | item.pszText = ShortcutFinal; |
260 | } | 262 | } |
261 | else | 263 | else |