VOID AddHotkey(HWND hwndList, PSZ pszName, DWORD dwDefault) { LVITEM lvi; char szINI[MAX_PATH]; char szBuffer[100]; INT x; PHOTKEY_DATA phd; GetModuleFileName(GetModuleHandle(NULL), szINI, MAX_PATH); for(x = lstrlen(szINI); x && szINI[x] != '\\'; x--); szINI[x] = '\0'; lstrcat(szINI, "\\bwh.ini"); phd = (PHOTKEY_DATA)HeapAlloc(GetProcessHeap(), 0, sizeof(HOTKEY_DATA)); phd->pszName = pszName; phd->dwDefault = dwDefault; phd->dwValue = GetPrivateProfileInt("HOTKEYS", pszName, dwDefault, szINI); lvi.mask = LVIF_PARAM | LVIF_TEXT; lvi.pszText = pszName; lvi.lParam = (LPARAM)phd; lvi.iSubItem = 0; lvi.iItem = ListView_GetItemCount(hwndList); ListView_InsertItem(hwndList, &lvi); lvi.mask = LVIF_TEXT; lvi.iSubItem = 1; lvi.pszText = HotkeyToString(phd->dwValue, szBuffer); ListView_SetItem(hwndList, &lvi); }
VOID SetHotkey(HWND hwndList, DWORD dwKey) { LVITEM lvi; char szBuffer[100]; lvi.iItem = -1; lvi.iItem = ListView_GetNextItem(hwndList, lvi.iItem, LVIS_SELECTED); while(lvi.iItem != -1) { lvi.mask = LVIF_PARAM; lvi.iSubItem = 0; ListView_GetItem(hwndList, &lvi); if(dwKey == -1) PHOTKEY_DATA(lvi.lParam)->dwValue = PHOTKEY_DATA(lvi.lParam)->dwDefault; else PHOTKEY_DATA(lvi.lParam)->dwValue = dwKey; ListView_SetItem(hwndList, &lvi); lvi.mask = LVIF_TEXT; lvi.iSubItem = 1; lvi.pszText = HotkeyToString(PHOTKEY_DATA(lvi.lParam)->dwValue, szBuffer); ListView_SetItem(hwndList, &lvi); lvi.iItem = ListView_GetNextItem(hwndList, lvi.iItem, LVIS_SELECTED); } }
void CWinHotkeyCtrl::UpdateText() { CString sText; HotkeyToString(m_vkCode, m_fModSet, sText); SetWindowText((LPCTSTR)sText); SetSel(0x8fffffff, 0x8fffffff, FALSE); }
std::string Hotkey::PrettyPrint(GG::Key key, GG::Flags<GG::ModKey> mod) { std::string ret = HotkeyToString(key, mod); ReplaceInString(ret, "GGK_", ""); std::string ks = HotkeyToString(key, GG::MOD_KEY_NONE); ReplaceInString(ks, "GGK_", ""); if(mod == GG::MOD_KEY_CTRL) return "CTRL+" + ks; if(mod == GG::MOD_KEY_SHIFT) return "SHIFT+" + ks; if(mod == GG::MOD_KEY_ALT) return "ALT+" + ks; ReplaceInString(ret, "MOD_KEY_", ""); return ret; }
BOOL HotkeyToString(DWORD dwHk, CString& s) { return HotkeyToString(LOBYTE(LOWORD(dwHk)), HIBYTE(LOWORD(dwHk)), s); }
void CPPageAccelTbl::OnEndlabeleditList(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR; LV_ITEM* pItem = &pDispInfo->item; *pResult = FALSE; if (!m_list.m_fInPlaceDirty) { return; } if (pItem->iItem < 0) { return; } wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(pItem->iItem)); switch (pItem->iSubItem) { case COL_KEY: { UINT cod, mod; CWinHotkeyCtrl* pWinHotkey = (CWinHotkeyCtrl*)m_list.GetDlgItem(IDC_WINHOTKEY1); pWinHotkey->GetWinHotkey(&cod, &mod); wc.fVirt = 0; if (mod & MOD_ALT) { wc.fVirt |= FALT; } if (mod & MOD_CONTROL) { wc.fVirt |= FCONTROL; } if (mod & MOD_SHIFT) { wc.fVirt |= FSHIFT; } wc.fVirt |= FVIRTKEY; wc.key = cod; CString str; HotkeyToString(cod, mod, str); m_list.SetItemText(pItem->iItem, pItem->iSubItem, str); *pResult = TRUE; } break; case COL_APPCMD: { int i = pItem->lParam; if (i >= 0 && i < _countof(g_CommandList)) { wc.appcmd = g_CommandList[i].appcmd; m_list.SetItemText(pItem->iItem, COL_APPCMD, pItem->pszText); *pResult = TRUE; } } break; case COL_MOUSE: wc.mouse = pItem->lParam; m_list.SetItemText(pItem->iItem, COL_MOUSE, pItem->pszText); break; case COL_MOUSE_FS: wc.mouseFS = pItem->lParam; m_list.SetItemText(pItem->iItem, COL_MOUSE_FS, pItem->pszText); break; case COL_RMCMD: wc.rmcmd = CStringA(CString(pItem->pszText)).Trim(); wc.rmcmd.Replace(' ', '_'); m_list.SetItemText(pItem->iItem, pItem->iSubItem, CString(wc.rmcmd)); *pResult = TRUE; break; case COL_RMREPCNT: CString str = CString(pItem->pszText).Trim(); wc.rmrepcnt = _tcstol(str, NULL, 10); str.Format(_T("%d"), wc.rmrepcnt); m_list.SetItemText(pItem->iItem, pItem->iSubItem, str); *pResult = TRUE; break; } if (*pResult) { SetModified(); } }
std::string Hotkey::ToString() const { return HotkeyToString(m_key, m_mod_keys); }