AddSvrListFunc.cpp
上传用户:szopptop
上传日期:2013-04-23
资源大小:1047k
文件大小:3k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. BOOL jRegSetKey(LPCTSTR pSubKeyName, LPCTSTR pValueName, DWORD dwFlags, LPBYTE pValue, DWORD nValueSize);
  3. BOOL jRegGetKey(LPCTSTR pSubKeyName, LPCTSTR pValueName, LPBYTE pValue);
  4. extern HWND g_hMainWnd;
  5. BOOL CALLBACK AddSvrListProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
  6. {
  7. switch (uMsg)
  8. {
  9. case WM_INITDIALOG:
  10. {
  11. CenterDialog(g_hMainWnd, hWndDlg);
  12. break;
  13. }
  14. case WM_COMMAND:
  15. {
  16. switch (wParam)
  17. {
  18. case IDC_ADD_GATELIST:
  19. {
  20. break;
  21. }
  22. case IDC_REMOVE_GATELIST:
  23. {
  24. int nSel = SendMessage(GetDlgItem(hWndDlg, IDC_GATELIST), LB_GETCURSEL, (WPARAM)0, (LPARAM)0L);
  25. if (nSel != LB_ERR)
  26. SendMessage(GetDlgItem(hWndDlg, IDC_GATELIST), LB_DELETESTRING, (WPARAM)nSel, (LPARAM)0L);
  27. break;
  28. }
  29. case IDOK:
  30. {
  31. TCHAR szKey[64];
  32. TCHAR szSubKey[32];
  33. TCHAR szTitle[64];
  34. TCHAR szGateList[32];
  35. DWORD dwPrivateIP = 0, dwPublicIP = 0;
  36. UINT nGateCount = 0;
  37. ZeroMemory(szKey, sizeof(szKey));
  38. ZeroMemory(szSubKey, sizeof(szSubKey));
  39. ZeroMemory(szTitle, sizeof(szTitle));
  40. ZeroMemory(szGateList, sizeof(szGateList));
  41. GetWindowText(GetDlgItem(hWndDlg, IDC_TITLE), szTitle, sizeof(szTitle));
  42. if (lstrlen(szTitle))
  43. {
  44. lstrcpy(szKey, _LOGIN_SERVER_REGISTRY);
  45. lstrcat(szKey, _T("\Servers\"));
  46. lstrcat(szKey, szTitle);
  47. jRegSetKey(szKey, _TEXT("Title"), REG_SZ, (LPBYTE)szTitle, _tcslen(szTitle) * sizeof(TCHAR));
  48. if (SendMessage(GetDlgItem(hWndDlg, IDC_IPADDRESS1), IPM_ISBLANK, (WPARAM)0, (LPARAM)0L) ||
  49. SendMessage(GetDlgItem(hWndDlg, IDC_IPADDRESS2), IPM_ISBLANK, (WPARAM)0, (LPARAM)0L))
  50. {
  51. MessageBox(hWndDlg, _TEXT("ERROR"), _T("Configuration"), MB_OK|MB_ICONSTOP);
  52. return FALSE;
  53. }
  54. SendMessage(GetDlgItem(hWndDlg, IDC_IPADDRESS1), IPM_GETADDRESS, (WPARAM)0, (LPARAM)(LPDWORD)&dwPrivateIP);
  55. SendMessage(GetDlgItem(hWndDlg, IDC_IPADDRESS2), IPM_GETADDRESS, (WPARAM)0, (LPARAM)(LPDWORD)&dwPublicIP);
  56. jRegSetKey(szKey, _TEXT("PrivateIP"), REG_DWORD, (LPBYTE)&dwPrivateIP, sizeof(DWORD));
  57. jRegSetKey(szKey, _TEXT("PublicIP"), REG_DWORD, (LPBYTE)&dwPublicIP, sizeof(DWORD));
  58. nGateCount = SendMessage(GetDlgItem(hWndDlg, IDC_GATELIST), LB_GETCOUNT, (WPARAM)0, (LPARAM)(LPDWORD)0L);
  59. jRegSetKey(szKey, _TEXT("NumberOfGate"), REG_DWORD, (LPBYTE)&nGateCount, sizeof(UINT));
  60. if (SendMessage(GetDlgItem(hWndDlg, IDC_IPADDRESS3), IPM_ISBLANK, (WPARAM)0, (LPARAM)0L) == 0)
  61. {
  62. DWORD dwIP = 0;
  63. TCHAR szPort[10];
  64. ZeroMemory(szPort, sizeof(szPort));
  65. SendMessage(GetDlgItem(hWndDlg, IDC_IPADDRESS3), IPM_GETADDRESS, (WPARAM)0, (LPARAM)(LPDWORD)&dwIP);
  66. GetWindowText(GetDlgItem(hWndDlg, IDC_PORT), szPort, sizeof(szPort));
  67. wsprintf(szGateList, _TEXT("%d.%d.%d.%d:%s"), FIRST_IPADDRESS(dwIP), SECOND_IPADDRESS(dwIP), 
  68. THIRD_IPADDRESS(dwIP), FOURTH_IPADDRESS(dwIP), szPort);
  69. jRegSetKey(szKey, _TEXT("Gate"), REG_SZ, (LPBYTE)szGateList, _tcslen(szGateList) * sizeof(TCHAR));
  70. }
  71. }
  72. }
  73. case IDCANCEL:
  74. return EndDialog(hWndDlg, IDCANCEL);
  75. }
  76. }
  77. }
  78. return FALSE;
  79. }