MainFrm.cpp
上传用户:tianheyiqi
上传日期:2010-04-16
资源大小:282k
文件大小:8k
源码类别:

外挂编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "ROA.h"
  5. #include "MainFrm.h"
  6. #include "ROAView.h"
  7. #include "DlgOptLog.h"
  8. #include "DlgOptItemPriority.h"
  9. #include "DlgOption.h"
  10. #include "DlgOptEmotion.h"
  11. #include "DlgSettings.h"
  12. #include "DlgSetCmn.h"
  13. #include "DlgSetMvp.h"
  14. #include "DlgSetPvp.h"
  15. #include "DlgSetGvg.h"
  16. #include "DlgShortkey.h"
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22. extern CROAApp theApp;
  23. BOOL RoForeground()
  24. {
  25. HWND hwnd;
  26. hwnd=::GetForegroundWindow();
  27. char buffer[1024];
  28. ::GetWindowText(hwnd, buffer, 1024);
  29. return(strcmp(_T("仙境传说"), buffer) == 0);
  30. }
  31. void CMainFrame::OnKeyboard(WPARAM wParam, LPARAM lParam)
  32. {
  33. BOOL bKeyDown = !(lParam & 0x80000000);
  34. if(bConnected && dwAccountId && RoForeground() && bKeyDown && curFunc == NULL)
  35. {
  36. EnterCriticalSection(&csShortcutFuncs);
  37. BYTE vKey = wParam;
  38. BOOL bCtrlDown, bAltDown, bShiftDown;
  39. short keyState;
  40. keyState = GetAsyncKeyState(VK_CONTROL);
  41. bCtrlDown = !!(keyState & 0x8000);
  42. keyState = GetAsyncKeyState(VK_MENU);
  43. bAltDown = !!(keyState & 0x8000);
  44. keyState = GetAsyncKeyState(VK_SHIFT);
  45. bShiftDown = !!(keyState & 0x8000);
  46. switch(vKey)
  47. {
  48. case 'C':
  49. if(bCtrlDown && !bShiftDown && !bAltDown)
  50. {
  51. curFunc = ufShowCarts;
  52. curFuncPara = 0;
  53. }
  54. break;
  55. case 'W':
  56. if(bCtrlDown && !bShiftDown && !bAltDown)
  57. {
  58. curFunc = ufShowServerIp;
  59. curFuncPara = 0;
  60. }
  61. break;
  62. case VK_HOME:
  63. if(!bCtrlDown && !bShiftDown && !bAltDown)
  64. {
  65. curFunc = ufPopupRoaWindow;
  66. curFuncPara = eWindowOption;
  67. }
  68. break;
  69. case VK_TAB:
  70. if(!bCtrlDown && !bShiftDown && !bAltDown)
  71. {
  72. curFunc = UFENTRY[userfuncs[10]];
  73. }
  74. break;
  75. case 48:
  76. if(bCtrlDown && !bShiftDown && !bAltDown)
  77. {
  78. curFunc = UFENTRY[userfuncs[9]];
  79. }
  80. if(bCtrlDown && bShiftDown && !bAltDown)
  81. {
  82. curFunc = ufShowEmotion;
  83. curFuncPara = 0;
  84. }
  85. break;
  86. case 49:
  87. case 50:
  88. case 51:
  89. case 52:
  90. case 53:
  91. case 54:
  92. case 55:
  93. case 56:
  94. case 57:
  95. if(bCtrlDown && !bShiftDown && !bAltDown)
  96. {
  97. curFunc = UFENTRY[userfuncs[vKey-49]];
  98. curFuncPara = 2;
  99. }
  100. if(bCtrlDown && bShiftDown && !bAltDown)
  101. {
  102. curFunc = ufShowEmotion;
  103. curFuncPara = vKey - 48;
  104. }
  105. break;
  106. case 77:
  107. if(bCtrlDown && !bShiftDown && !bAltDown)
  108. curFunc = ufShowMonsters;
  109. break;
  110. case 73:
  111. if(bCtrlDown && !bShiftDown && !bAltDown)
  112. curFunc = ufShowInventory;
  113. break;
  114. case 80:
  115. if(bCtrlDown && !bShiftDown && !bAltDown)
  116. curFunc = ufShowPlayers;
  117. break;
  118. case 191:
  119. if(bCtrlDown && !bShiftDown && !bAltDown)
  120. curFunc = ufShowStatus;
  121. break;
  122. case 192:
  123. if(!bCtrlDown && !bShiftDown && !bAltDown)
  124. curFunc = UFENTRY[userfuncs[11]];
  125. break;
  126. case 219:
  127. if(bCtrlDown && !bShiftDown && !bAltDown)
  128. {
  129. curFunc = ufSpeedDown;
  130. }
  131. break;
  132. case 221:
  133. if(bCtrlDown && !bShiftDown && !bAltDown)
  134. {
  135. curFunc = ufSpeedUp;
  136. }
  137. break;
  138. }
  139. LeaveCriticalSection(&csShortcutFuncs);
  140. }
  141. return;
  142. }
  143. //////////////////////////////////////////////////////////////////////////////
  144. // CMainFrame
  145. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  146. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  147. //{{AFX_MSG_MAP(CMainFrame)
  148. ON_WM_CREATE()
  149. ON_COMMAND(IDD_OPT_LOG, OnOptLog)
  150. ON_WM_CLOSE()
  151. ON_COMMAND(IDD_OPT_ITEMPRIORITY, OnOptItempriority)
  152. ON_UPDATE_COMMAND_UI(IDD_MISC_SETTING, OnUpdateMiscSetting)
  153. ON_UPDATE_COMMAND_UI(ID_MNU_SETTINGS, OnUpdateMnuSettings)
  154. ON_COMMAND(ID_MNU_EMOTIONS, OnMnuEmotions)
  155. ON_UPDATE_COMMAND_UI(IDD_OPT_LOG, OnUpdateOptLog)
  156. ON_COMMAND(IDD_MNU_OPTION, OnMnuOption)
  157. ON_COMMAND(ID_MNU_SETTINGS, OnMnuSettings)
  158. ON_WM_SIZE()
  159. ON_WM_TIMER()
  160. ON_COMMAND_EX(ID_VIEW_MAP, OnBarCheck )
  161. ON_UPDATE_COMMAND_UI(ID_VIEW_MAP, OnUpdateControlBarMenu)
  162. ON_COMMAND_EX(ID_VIEW_YOUR_STATUS, OnBarCheck )
  163. ON_UPDATE_COMMAND_UI(ID_VIEW_YOUR_STATUS, OnUpdateControlBarMenu)
  164. ON_COMMAND_EX(IDD_VIEW_ENV, OnBarCheck )
  165. ON_UPDATE_COMMAND_UI(IDD_VIEW_ENV, OnUpdateControlBarMenu)
  166. ON_COMMAND_EX(IDD_VIEW_CHATLOG, OnBarCheck )
  167. ON_UPDATE_COMMAND_UI(IDD_VIEW_CHATLOG, OnUpdateControlBarMenu)
  168. ON_COMMAND_EX(ID_VIEW_MENUBAR, OnBarCheck )
  169. ON_UPDATE_COMMAND_UI(ID_VIEW_MENUBAR, OnUpdateControlBarMenu)
  170. ON_COMMAND(ID_MNU_SHORTKEY, OnMnuShortkey)
  171. //}}AFX_MSG_MAP
  172. ON_MESSAGE(WM_USER+2500, OnKeyboard)
  173. END_MESSAGE_MAP()
  174. static UINT indicators[] =
  175. {
  176. ID_SEPARATOR,           // status line indicator
  177. ID_INDICATOR_CAPS,
  178. ID_INDICATOR_NUM,
  179. ID_INDICATOR_SCRL,
  180. };
  181. /////////////////////////////////////////////////////////////////////////////
  182. // CMainFrame construction/destruction
  183. CMainFrame::CMainFrame()
  184. {
  185. // TODO: add member initialization code here
  186. }
  187. CMainFrame::~CMainFrame()
  188. {
  189. }
  190. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  191. {
  192. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  193. return -1;
  194. llFile = eLogNone;
  195. llDlg = eLogNone;
  196. llRo = eLogNone;
  197. SetWindowText(_T("天外仙境"));
  198. return 0;
  199. }
  200. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  201. {
  202. if( !CFrameWnd::PreCreateWindow(cs) )
  203. return FALSE;
  204. cs.lpszClass = AfxRegisterWndClass(0, NULL, NULL,
  205. AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  206. cs.style &= ~FWS_ADDTOTITLE;
  207. return TRUE;
  208. }
  209. /////////////////////////////////////////////////////////////////////////////
  210. // CMainFrame diagnostics
  211. #ifdef _DEBUG
  212. void CMainFrame::AssertValid() const
  213. {
  214. CFrameWnd::AssertValid();
  215. }
  216. void CMainFrame::Dump(CDumpContext& dc) const
  217. {
  218. CFrameWnd::Dump(dc);
  219. }
  220. #endif //_DEBUG
  221. /////////////////////////////////////////////////////////////////////////////
  222. // CMainFrame message handlers
  223. void CMainFrame::OnOptLog() 
  224. {
  225. // TODO: Add your command handler code here
  226. CDlgOptLog dlg;
  227. bIsModal = true;
  228. dlg.DoModal();
  229. bIsModal = false;
  230. }
  231. void CMainFrame::OnClose() 
  232. {
  233. // TODO: Add your message handler code here and/or call default
  234. // if(IDYES == MessageBox("是否确定退出ROA?", "ROA", MB_YESNO|MB_ICONQUESTION))
  235. {
  236. if(pWorkingThread)
  237. {
  238. nThreadTerm = 1;
  239. utlLogout("与仙境传说客户端断开连接...", eLogCommon, false);
  240. if(pWorkingThread)
  241. WaitForSingleObject(pWorkingThread->m_hThread, INFINITE);
  242. }
  243. WSACleanup();
  244. fLog.Close();
  245. CFrameWnd::OnClose();
  246. }
  247. }
  248. void CMainFrame::OnOptItempriority() 
  249. {
  250. // TODO: Add your command handler code here
  251. CDlgOptItemPriority dlg;
  252. bIsModal = true;
  253. dlg.DoModal();
  254. bIsModal = false;
  255. }
  256. void CMainFrame::OnUpdateMiscSetting(CCmdUI* pCmdUI) 
  257. {
  258. // TODO: Add your command update UI handler code here
  259. pCmdUI->Enable(nConnState >= 4);
  260. }
  261. void CMainFrame::OnMnuOption() 
  262. {
  263. // TODO: Add your command handler code here
  264. CDlgOption dlgOption(true);
  265. bIsModal = true;
  266. dlgOption.m_option = option;
  267. if(dlgOption.DoModal() == IDOK)
  268. {
  269. option = dlgOption.m_option;
  270. utlSaveOption(option);
  271. }
  272. utlParseHpSpItems();
  273. bIsModal = false;
  274. }
  275. void CMainFrame::OnMnuSettings() 
  276. {
  277. // TODO: Add your command handler code here
  278. CDlgSettings dlgSetting(_T("战斗设定"));
  279. CDlgSetCmn dlgCmn;
  280. CDlgSetMvp dlgMvp;
  281. CDlgSetPvp dlgPvp;
  282. CDlgSetGvg dlgGvg;
  283. dlgCmn.m_settingcmn = settingcmn;
  284. dlgMvp.m_settingmvp = settingmvp;
  285. dlgSetting.AddPage(&dlgCmn);
  286. dlgSetting.AddPage(&dlgMvp);
  287. // dlgSetting.AddPage(&dlgPvp);
  288. // dlgSetting.AddPage(&dlgGvg);
  289. bIsModal = true;
  290. if(IDOK == dlgSetting.DoModal())
  291. {
  292. settingcmn = dlgCmn.m_settingcmn;
  293. settingmvp = dlgMvp.m_settingmvp;
  294. utlWriteUserProfile();
  295. }
  296. bIsModal = false;
  297. return;
  298. }
  299. void CMainFrame::OnUpdateMnuSettings(CCmdUI* pCmdUI) 
  300. {
  301. // TODO: Add your command update UI handler code here
  302. pCmdUI->Enable(strlen(you.cName) > 0);
  303. }
  304. void CMainFrame::OnMnuEmotions() 
  305. {
  306. // TODO: Add your command handler code here
  307. CDlgOptEmotion dlgEmotion;
  308. bIsModal = true;
  309. if(dlgEmotion.DoModal() == IDOK)
  310. {
  311. utlSaveOption(option);
  312. }
  313. bIsModal = false;
  314. }
  315. void CMainFrame::OnUpdateOptLog(CCmdUI* pCmdUI) 
  316. {
  317. // TODO: Add your command update UI handler code here
  318. #ifdef VIPMODE
  319. pCmdUI->Enable(true);
  320. #else
  321. pCmdUI->Enable(false);
  322. #endif
  323. }
  324. void CMainFrame::OnMnuShortkey() 
  325. {
  326. // TODO: Add your command handler code here
  327. CDlgShortkey dlgKey;
  328. bIsModal = true;
  329. if(IDOK == dlgKey.DoModal())
  330. {
  331. utlWriteUserProfile();
  332. }
  333. bIsModal = false;
  334. }