Dlg3.cpp
上传用户:tree100901
上传日期:2016-07-12
资源大小:182k
文件大小:4k
源码类别:

外挂编程

开发平台:

Visual C++

  1. // Dlg3.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "WarH.h"
  5. #include "Register.h"
  6. #include "Dlg3.h"
  7. // CDlg3 对话框
  8. IMPLEMENT_DYNAMIC(CDlg3, CDialog)
  9. CDlg3::CDlg3(CWnd* pParent /*=NULL*/)
  10. : CDialog(CDlg3::IDD, pParent)
  11. , m_nW(0)
  12. , m_nH(0)
  13. , m_nBit(0)
  14. , m_nHz(0)
  15. {
  16. }
  17. CDlg3::~CDlg3()
  18. {
  19. }
  20. void CDlg3::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. DDX_Text(pDX, IDC_W, m_nW);
  24. DDV_MinMaxUInt(pDX, m_nW, 800, 2000);
  25. DDX_Text(pDX, IDC_H, m_nH);
  26. DDV_MinMaxUInt(pDX, m_nH, 600, 2000);
  27. DDX_Text(pDX, IDC_BIT, m_nBit);
  28. DDV_MinMaxUInt(pDX, m_nBit, 8, 64);
  29. DDX_Text(pDX, IDC_HZ, m_nHz);
  30. DDV_MinMaxUInt(pDX, m_nHz, 60, 75);
  31. }
  32. BEGIN_MESSAGE_MAP(CDlg3, CDialog)
  33. ON_WM_CTLCOLOR()
  34. ON_WM_SHOWWINDOW()
  35. ON_BN_CLICKED(IDC_SETREFRES, &CDlg3::OnBnClickedSetrefres)
  36. ON_BN_CLICKED(IDC_SETNAME, &CDlg3::OnBnClickedSetname)
  37. END_MESSAGE_MAP()
  38. // CDlg3 消息处理程序
  39. HBRUSH CDlg3::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  40. {
  41. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  42. // TODO:  在此更改 DC 的任何属性
  43. int nID = pWnd->GetDlgCtrlID();
  44. switch (nID)
  45. {
  46. case IDC_STATIC:
  47. case IDC_W:
  48. case IDC_H:
  49. case IDC_BIT:
  50. case IDC_HZ:
  51. case IDC_NAME:
  52. pDC->SetTextColor(RGB(255, 0, 0));
  53. break;
  54. case IDC_STATIC1:
  55. case IDC_STATIC2:
  56. case IDC_STATIC3:
  57. pDC->SetTextColor(RGB(0, 0, 255));
  58. break;
  59. }
  60. // TODO:  如果默认的不是所需画笔,则返回另一个画笔
  61. return hbr;
  62. }
  63. void CDlg3::OnInitNameEdit()
  64. {
  65. char mbuf[255];
  66. wchar_t wbuf[255]; 
  67. memset(mbuf, 0, sizeof(mbuf));
  68. memset(wbuf, 0, sizeof(wbuf));
  69. HKEY hNameKey = NULL;
  70. if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\Blizzard Entertainment\Warcraft III\String"), 
  71. 0, KEY_WRITE|KEY_READ, &hNameKey) == ERROR_SUCCESS)
  72. {
  73. DWORD dwType = 0;
  74. DWORD dwCount = 0; 
  75. if (RegQueryValueEx(hNameKey, _T("userlocal"), NULL, &dwType,NULL, &dwCount) == ERROR_SUCCESS)
  76. {
  77. if (dwCount <= 32)
  78. {
  79. if (RegQueryValueExA(hNameKey, "userlocal", NULL, &dwType,(LPBYTE)mbuf, &dwCount) == ERROR_SUCCESS)
  80. {
  81. MultiByteToWideChar(CP_UTF8, 0, mbuf, dwCount, wbuf, dwCount);
  82. ::SetDlgItemText(m_hWnd, IDC_NAME, wbuf);
  83. }
  84. }
  85. }
  86. }
  87. if (hNameKey != NULL)
  88. RegCloseKey(hNameKey);
  89. }
  90. void CDlg3::OnShowWindow(BOOL bShow, UINT nStatus)
  91. {
  92. CDialog::OnShowWindow(bShow, nStatus);
  93. // TODO: 在此处添加消息处理程序代码
  94. CRegister reg;
  95. reg.OpenKeyEx(HKEY_CURRENT_USER, _T("Software\Blizzard Entertainment\Warcraft III\Video"));
  96. reg.QueryValueExA("reswidth", (LPBYTE)&m_nW, 4);
  97. reg.QueryValueExA("resheight", (LPBYTE)&m_nH, 4);
  98. reg.QueryValueExA("colordepth", (LPBYTE)&m_nBit, 4);
  99. reg.QueryValueExA("refreshrate", (LPBYTE)&m_nHz, 4);
  100. OnInitNameEdit();
  101. UpdateData(0);
  102. }
  103. void CDlg3::OnBnClickedSetrefres()
  104. {
  105. // TODO: 在此添加控件通知处理程序代码
  106. UpdateData(1);
  107. BOOL bResult = TRUE;
  108. CRegister reg;
  109. bResult = bResult && reg.OpenKeyEx(HKEY_CURRENT_USER, _T("Software\Blizzard Entertainment\Warcraft III\Video"));
  110. bResult = bResult && reg.SetValueExExA("reswidth",REG_DWORD, (LPBYTE)&m_nW, sizeof(m_nW));
  111. bResult = bResult && reg.SetValueExExA("resheight", REG_DWORD, (LPBYTE)&m_nH, sizeof(m_nH));
  112. bResult = bResult && reg.SetValueExExA("colordepth", REG_DWORD, (LPBYTE)&m_nBit, sizeof(m_nBit));
  113. bResult = bResult && reg.SetValueExExA("refreshrate", REG_DWORD, (LPBYTE)&m_nHz, sizeof(m_nHz));
  114. if (bResult)
  115. {
  116. int w = GetSystemMetrics(SM_CXSCREEN);   
  117. int h = GetSystemMetrics(SM_CYSCREEN);   
  118. CString s;
  119. s.Format(_T("       修改成功!进魔兽看看吧:)nn最佳设置:n         解析度: %d x %d x %d bitn         刷新率: %dHz"), w, h, 32, 75);
  120. MessageBox(s, _T("消息:"), MB_OK);
  121. }
  122. }
  123. void CDlg3::OnBnClickedSetname()
  124. {
  125. // TODO: 在此添加控件通知处理程序代码
  126. wchar_t buf[255];
  127. char mbuf[255];
  128. memset(mbuf, 0, sizeof(mbuf));
  129. GetDlgItemText(IDC_NAME, buf, wcslen(buf));
  130. WideCharToMultiByte(CP_UTF8, 0, buf, wcslen(buf), mbuf, wcslen(buf) * 3, NULL, NULL);  
  131. HKEY hNameKey = NULL;
  132. if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\Blizzard Entertainment\Warcraft III\String"), 
  133. 0, KEY_WRITE|KEY_READ, &hNameKey) == ERROR_SUCCESS)
  134. {
  135. if (RegSetValueExA(hNameKey, "userlocal", NULL, REG_SZ,
  136. (LPBYTE)mbuf, strlen(mbuf)) == ERROR_SUCCESS)
  137. {
  138. MessageBox(_T("改名成功!进魔兽--局域网看看吧:)"), _T("消息:"), MB_OK);
  139. }
  140. }
  141. if (hNameKey != NULL)
  142. RegCloseKey(hNameKey);
  143. }