// PAD plugin configure and about dialogs #include "pch.h" static const TCHAR *vkeys[256] = { // default keyboard virtual codes description (? - not used) _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("Bkspace"), _T("Tab"), _T("?"), _T("?"), _T("?"), _T("Enter"), _T("?"), _T("?"), // 00-0F _T("Shift"), _T("Control"), _T("Alt"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), // 10-1F _T("Space"),_T("PgUp"),_T("PgDown"),_T("End"),_T("Home"),_T("Left"),_T("Up"),_T("Right"), _T("Down"), _T("?"),_T("?"),_T("?"),_T("?"),_T("Ins"),_T("Del"),_T("?"), // 20-2F _T("0"), _T("1"), _T("2"), _T("3"), _T("4"), _T("5"), _T("6"), _T("7"), _T("8"), _T("9"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), // 30-3F _T(""), _T("A"), _T("B"), _T("C"), _T("D"), _T("E"), _T("F"), _T("G"), _T("H"), _T("I"), _T("J"), _T("K"), _T("L"), _T("M"), _T("N"), _T("O"), // 40-4F _T("P"), _T("Q"), _T("R"), _T("S"), _T("T"), _T("U"), _T("V"), _T("W"), _T("X"), _T("Y"), _T("Z"), _T("?"), _T("?"), _T("?"), _T("?"), _T("?"), // 50-5F _T("Num 0"), _T("Num 1"), _T("Num 2"), _T("Num 3"), _T("Num 4"), _T("Num 5"), _T("Num 6"), _T("Num 7"), _T("Num 8"), _T("Num 9"), _T("Mult"), _T("Plus"), _T("Bkslash"), _T("Minus"), _T("Decimal"), _T("Slash"), // 60-6F _T("F1"), _T("F2"), _T("F3"), _T("F4"), _T("F5"), _T("F6"), _T("F7"), _T("F8"), _T("F9"), _T("F10"), _T("F11"), _T("F12"), _T("?"), _T("?"), _T("?"), _T("?"), // 70-7F }; static const TCHAR *GetVKDesc(int vkey) { if(vkey >= 0x80) return _T("?"); else return vkeys[vkey]; } void PADLoadConfig(HWND hwndDlg) { char parm[256] = { 0 }; int vkey; // Plugged or not sprintf_s(parm, sizeof(parm), "PluggedIn""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].plugged = GetConfigBool(parm, USER_PADS); // // Buttons 8| // sprintf_s(parm, sizeof(parm), "VKEY_FOR_UP""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_UP] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_DOWN""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_DOWN] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_LEFT""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_LEFT] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_RIGHT""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_RIGHT] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XUP50""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP50] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XUP100""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP100] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XDOWN50""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN50] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XDOWN100""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN100] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XLEFT50""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT50] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XLEFT100""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT100] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XRIGHT50""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT50] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XRIGHT100""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT100] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXUP""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXUP] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXDOWN""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXDOWN] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXLEFT""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXLEFT] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXRIGHT""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXRIGHT] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_TRIGGERL""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERL] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_TRIGGERR""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERR] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_TRIGGERZ""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERZ] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_A""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_A] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_B""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_B] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_X""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_X] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_Y""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_Y] = GetConfigInt(parm, USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_START""_%i", pad.padToConfigure); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_START] = GetConfigInt(parm, USER_PADS); // // Enable buttons // if(hwndDlg) { EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_UP), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_DOWN), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_LEFT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_RIGHT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXUP), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXDOWN), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXLEFT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXRIGHT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERL), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERR), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERZ), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_A), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_B), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_X), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_Y), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_START), TRUE); } // // Set buttons // if(hwndDlg) { vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_UP]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_UP, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_UP, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_DOWN]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_DOWN, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_DOWN, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_RIGHT]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_RIGHT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_RIGHT, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_LEFT]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_LEFT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_LEFT, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP50]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XUP50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XUP50, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP100]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XUP100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XUP100, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN50]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN50, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN100]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN100, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT50]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT50, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT100]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT100, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT50]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT50, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT100]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT100, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXUP]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXUP, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXUP, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXDOWN]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXDOWN, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXDOWN, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXRIGHT]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXRIGHT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXRIGHT, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXLEFT]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXLEFT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXLEFT, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERL]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERL, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERL, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERR]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERR, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERR, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERZ]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERZ, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERZ, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_A]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_A, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_A, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_B]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_B, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_B, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_X]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_X, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_X, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_Y]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_Y, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_Y, GetVKDesc(vkey)); vkey = pad.config[pad.padToConfigure].vkeys[VKEY_FOR_START]; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_START, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_START, GetVKDesc(vkey)); } if(!pad.config[pad.padToConfigure].plugged) { CheckDlgButton(hwndDlg, IDC_CHECK_PLUG, BST_UNCHECKED); // // Disable buttons // if(hwndDlg) { EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_UP), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_DOWN), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_LEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_RIGHT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXUP), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXDOWN), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXLEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXRIGHT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERL), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERR), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERZ), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_A), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_B), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_X), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_Y), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_START), FALSE); } return; } else CheckDlgButton(hwndDlg, IDC_CHECK_PLUG, BST_CHECKED); } void PADSaveConfig(HWND hwndDlg) { char parm[256]; // Plugged or not sprintf_s(parm, sizeof(parm), "PluggedIn""_%i", pad.padToConfigure); if(pad.config[pad.padToConfigure].plugged) SetConfigBool(parm, true, USER_PADS); else SetConfigBool(parm, false, USER_PADS); // // Buttons // sprintf_s(parm, sizeof(parm), "VKEY_FOR_UP""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_UP], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_DOWN""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_DOWN], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_LEFT""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_LEFT], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_RIGHT""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_RIGHT], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XUP50""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP50], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XUP100""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP100], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XDOWN50""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN50], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XDOWN100""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN100], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XLEFT50""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT50], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XLEFT100""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT100], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XRIGHT50""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT50], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_XRIGHT100""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT100], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXUP""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXUP], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXDOWN""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXDOWN], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXLEFT""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXLEFT], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_CXRIGHT""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXRIGHT], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_TRIGGERL""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERL], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_TRIGGERR""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERR], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_TRIGGERZ""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERZ], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_A""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_A], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_B""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_B], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_X""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_X], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_Y""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_Y], USER_PADS); sprintf_s(parm, sizeof(parm), "VKEY_FOR_START""_%i", pad.padToConfigure); SetConfigInt(parm, pad.config[pad.padToConfigure].vkeys[VKEY_FOR_START], USER_PADS); } // reset all butons and unplug pad void PADClearConfig(HWND hwndDlg) { int i; pad.config[pad.padToConfigure].plugged = false; for(i=0; i= VK_F1 && i <= VK_F24) continue; if(i == VK_ESCAPE) return 0; else return i; } } } } INT_PTR CALLBACK PADConfigDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { TCHAR buf[256]; int vkey; switch(uMsg) { case WM_INITDIALOG: _stprintf_s (buf, _countof(buf) - 1, _T("Configure Controller %i"), pad.padToConfigure + 1); SetWindowText(hwndDlg, buf); if(pad.padToConfigure != 0) { EnableWindow(GetDlgItem(hwndDlg, IDC_PAD_CONFIG_DEFAULT), FALSE); } PADLoadConfig(hwndDlg); return TRUE; case WM_CLOSE: EndDialog(hwndDlg, 0); return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_BUTTON_UP: SetDlgItemText(hwndDlg, IDC_BUTTON_UP, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_UP] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_UP, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_UP, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_DOWN: SetDlgItemText(hwndDlg, IDC_BUTTON_DOWN, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_DOWN] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_DOWN, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_DOWN, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_LEFT: SetDlgItemText(hwndDlg, IDC_BUTTON_LEFT, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_LEFT] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_LEFT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_LEFT, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_RIGHT: SetDlgItemText(hwndDlg, IDC_BUTTON_RIGHT, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_RIGHT] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_RIGHT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_RIGHT, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XUP50: SetDlgItemText(hwndDlg, IDC_BUTTON_XUP50, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP50] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XUP50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XUP50, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XUP100: SetDlgItemText(hwndDlg, IDC_BUTTON_XUP100, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XUP100] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XUP100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XUP100, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XDOWN50: SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN50, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN50] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN50, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XDOWN100: SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN100, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XDOWN100] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XDOWN100, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XLEFT50: SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT50, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT50] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT50, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XLEFT100: SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT100, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XLEFT100] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XLEFT100, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XRIGHT50: SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT50, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT50] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT50, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT50, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_XRIGHT100: SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT100, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_XRIGHT100] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT100, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_XRIGHT100, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_CXUP: SetDlgItemText(hwndDlg, IDC_BUTTON_CXUP, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXUP] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXUP, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXUP, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_CXDOWN: SetDlgItemText(hwndDlg, IDC_BUTTON_CXDOWN, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXDOWN] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXDOWN, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXDOWN, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_CXLEFT: SetDlgItemText(hwndDlg, IDC_BUTTON_CXLEFT, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXLEFT] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXLEFT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXLEFT, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_CXRIGHT: SetDlgItemText(hwndDlg, IDC_BUTTON_CXRIGHT, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_CXRIGHT] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_CXRIGHT, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_CXRIGHT, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_TRIGGERL: SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERL, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERL] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERL, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERL, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_TRIGGERR: SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERR, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERR] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERR, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERR, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_TRIGGERZ: SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERZ, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_TRIGGERZ] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERZ, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_TRIGGERZ, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_A: SetDlgItemText(hwndDlg, IDC_BUTTON_A, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_A] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_A, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_A, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_B: SetDlgItemText(hwndDlg, IDC_BUTTON_B, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_B] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_B, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_B, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_X: SetDlgItemText(hwndDlg, IDC_BUTTON_X, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_X] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_X, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_X, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_Y: SetDlgItemText(hwndDlg, IDC_BUTTON_Y, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_Y] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_Y, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_Y, GetVKDesc(vkey)); return FALSE; case IDC_BUTTON_START: SetDlgItemText(hwndDlg, IDC_BUTTON_START, _T("?")); vkey = GetVKey(); pad.config[pad.padToConfigure].vkeys[VKEY_FOR_START] = vkey; if(vkey == 0) SetDlgItemText(hwndDlg, IDC_BUTTON_START, _T("...")); else SetDlgItemText(hwndDlg, IDC_BUTTON_START, GetVKDesc(vkey)); return FALSE; case IDC_CHECK_PLUG: if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_PLUG)) { EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_UP), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_DOWN), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_LEFT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_RIGHT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT50), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT100), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXUP), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXDOWN), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXLEFT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXRIGHT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERL), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERR), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERZ), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_A), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_B), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_X), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_Y), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_START), TRUE); pad.config[pad.padToConfigure].plugged = true; } else { EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_UP), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_DOWN), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_LEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_RIGHT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XUP100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XDOWN100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XLEFT100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT50), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_XRIGHT100), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXUP), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXDOWN), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXLEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_CXRIGHT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERL), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERR), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_TRIGGERZ), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_A), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_B), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_X), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_Y), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON_START), FALSE); pad.config[pad.padToConfigure].plugged = false; } return FALSE; case IDC_PAD_CONFIG_CANCEL: EndDialog(hwndDlg, 0); return TRUE; case IDC_PAD_CONFIG_OK: PADSaveConfig(hwndDlg); EndDialog(hwndDlg, 0); return TRUE; case IDC_PAD_CONFIG_CLEAR: PADClearConfig(hwndDlg); return FALSE; case IDC_PAD_CONFIG_DEFAULT: PADDefaultConfig(hwndDlg); return FALSE; } break; default: return FALSE; } return FALSE; } void PADConfigure(long padnum, HWND hwndParent) { pad.padToConfigure = padnum; DialogBox( GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG_PAD), hwndParent, PADConfigDialogProc); }