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

外挂编程

开发平台:

Visual C++

  1. // DlgEnv.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ROA.h"
  5. #include "DlgEnv.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CDlgEnv dialog
  13. enum
  14. {
  15. eTabMonster = 0,
  16. eTabPlayer = 1,
  17. eTabItem = 2
  18. };
  19. CDlgEnv::CDlgEnv(CWnd* pParent /*=NULL*/)
  20. : CDialog(CDlgEnv::IDD, pParent)
  21. {
  22. //{{AFX_DATA_INIT(CDlgEnv)
  23. // NOTE: the ClassWizard will add member initialization here
  24. //}}AFX_DATA_INIT
  25. }
  26. void CDlgEnv::DoDataExchange(CDataExchange* pDX)
  27. {
  28. CDialog::DoDataExchange(pDX);
  29. //{{AFX_DATA_MAP(CDlgEnv)
  30. DDX_Control(pDX, IDC_LST_ENV_PORTAL, m_lstPortals);
  31. DDX_Control(pDX, IDC_LST_ENV_PLAYER, m_lstPlayers);
  32. DDX_Control(pDX, IDC_LST_ENV_NPC, m_lstNpcs);
  33. DDX_Control(pDX, IDC_LST_ENV_MONSTER, m_lstMonsters);
  34. DDX_Control(pDX, IDC_LST_ENV_ITEM, m_lstItems);
  35. DDX_Control(pDX, IDC_TAB_SWITCH2, m_tabSwitch);
  36. //}}AFX_DATA_MAP
  37. }
  38. BEGIN_MESSAGE_MAP(CDlgEnv, CDialog)
  39. //{{AFX_MSG_MAP(CDlgEnv)
  40. ON_WM_SIZE()
  41. ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_SWITCH2, OnSelchangeTabSwitch2)
  42. //}}AFX_MSG_MAP
  43. END_MESSAGE_MAP()
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CDlgEnv message handlers
  46. BOOL CDlgEnv::OnInitDialog() 
  47. {
  48. CDialog::OnInitDialog();
  49. /*
  50. // TODO: Add extra initialization here
  51. m_tabSwitch.InsertItem(eTabMonster, "Monsters");
  52. m_tabSwitch.InsertItem(eTabPlayer, "Players");
  53. m_tabSwitch.InsertItem(eTabItem, "Items");
  54. // m_tabSwitch.InsertItem(3, "NPCs");
  55. // m_tabSwitch.InsertItem(4, "Portals");
  56. m_lstMonsters.InsertColumn( 0, _T("Id"), LVCFMT_LEFT, 50 );
  57. m_lstMonsters.InsertColumn( 1, _T("Name"), LVCFMT_LEFT, 50 );
  58. m_lstMonsters.InsertColumn( 2, _T("Attack"), LVCFMT_LEFT, 100 );
  59. m_lstMonsters.InsertColumn( 3, _T("Attack By"), LVCFMT_LEFT, 100 );
  60. m_lstMonsters.InsertColumn( 4, _T("PosTo"), LVCFMT_LEFT, 50 );
  61. m_lstPlayers.InsertColumn( 0, _T("Id"), LVCFMT_LEFT, 50 );
  62. m_lstPlayers.InsertColumn( 1, _T("Name"), LVCFMT_LEFT, 50 );
  63. m_lstPlayers.InsertColumn( 2, _T("Job"), LVCFMT_LEFT, 50 );
  64. m_lstPlayers.InsertColumn( 3, _T("Sex"), LVCFMT_LEFT, 50 );
  65. m_lstPlayers.InsertColumn( 4, _T("Pos"), LVCFMT_LEFT, 50 );
  66. m_lstPlayers.InsertColumn( 5, _T("PosTo"), LVCFMT_LEFT, 50 );
  67. m_lstItems.InsertColumn( 0, _T("Index"), LVCFMT_LEFT, 50 );
  68. m_lstItems.InsertColumn( 1, _T("Name"), LVCFMT_LEFT, 100);
  69. m_lstItems.InsertColumn( 2, _T("Amount"), LVCFMT_LEFT, 50 );
  70. m_lstItems.InsertColumn( 3, _T("Type"), LVCFMT_LEFT, 100 );
  71. ListView_SetExtendedListViewStyleEx(m_lstMonsters.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  72. ListView_SetExtendedListViewStyleEx(m_lstPlayers.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  73. ListView_SetExtendedListViewStyleEx(m_lstItems.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  74. OnSelchangeTabSwitch2(NULL, NULL);
  75. */
  76. return TRUE;  // return TRUE unless you set the focus to a control
  77.               // EXCEPTION: OCX Property Pages should return FALSE
  78. }
  79. void CDlgEnv::OnSize(UINT nType, int cx, int cy) 
  80. {
  81. if(SIZE_RESTORED == nType && ::IsWindow(m_tabSwitch.m_hWnd))
  82. {
  83. CRect rect;
  84. GetClientRect(rect);
  85. m_tabSwitch.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  86. m_tabSwitch.GetClientRect(rect);
  87. rect.DeflateRect(CSize(10, 10));
  88. rect.top += 10;
  89. m_lstPortals.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  90. m_lstNpcs.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  91. m_lstItems.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  92. m_lstPlayers.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  93. m_lstMonsters.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  94. }
  95. CDialog::OnSize(nType, cx, cy);
  96. }
  97. void CDlgEnv::OnSelchangeTabSwitch2(NMHDR* pNMHDR, LRESULT* pResult) 
  98. {
  99. int nIndex = m_tabSwitch.GetCurSel();
  100. m_lstMonsters.ShowWindow(nIndex == eTabMonster ? SW_SHOWNORMAL:SW_HIDE);
  101. m_lstPlayers.ShowWindow(nIndex == eTabPlayer ? SW_SHOWNORMAL:SW_HIDE);
  102. m_lstItems.ShowWindow(nIndex == eTabItem ? SW_SHOWNORMAL:SW_HIDE);
  103. switch(nIndex)
  104. {
  105. case eTabMonster:
  106. RefreshMonster();
  107. break;
  108. case eTabPlayer:
  109. RefreshPlayer();
  110. break;
  111. case eTabItem:
  112. RefreshItem();
  113. break;
  114. }
  115. if(pResult)
  116. *pResult = 0;
  117. }
  118. void CDlgEnv::RefreshMonster()
  119. {
  120. /* CString strValue, strTemp1, strTemp2;
  121. LVFINDINFO info;
  122. int nIndex;
  123. int i;
  124. // BOOL bAttack;
  125. // DWORD dwDamage, dwTemp1, dwTemp2;
  126. if(eTabMonster != m_tabSwitch.GetCurSel())
  127. return;
  128. info.flags = LVFI_STRING;
  129. for(i=0; i<monsters.GetSize(); i++)
  130. {
  131. strValue.Format("%X", monsters[i].dwId);
  132. info.psz = strValue.LockBuffer();
  133. nIndex = m_lstMonsters.FindItem(&info);
  134. if(-1 == nIndex)
  135. {
  136. nIndex = m_lstMonsters.InsertItem(m_lstMonsters.GetItemCount(), strValue);
  137. }
  138. strValue.UnlockBuffer();
  139. m_lstMonsters.SetItemText(nIndex, 1, monsters[i].cName);
  140. strValue.Format("(%d, %d)", monsters[i].pntTo.x, monsters[i].pntTo.y);
  141. m_lstMonsters.SetItemText(nIndex, 4, strValue);
  142. // Attacking
  143. // bAttack = damages.FindDamageTo(monsters[i].dwId, strTemp1, dwTemp1);
  144. // yourDamages.FindDamageTo(monsters[i].dwId, strTemp2, dwTemp2);
  145. // dwDamage = dwTemp1 + dwTemp2;
  146. // strValue.Format("[%d](%d):(%d)", dwDamage, dwTemp2, dwTemp1);
  147. // m_lstMonsters.SetItemText(nIndex, 2, strValue);
  148. // Attacked by
  149. // bAttack = damages.FindDamageFrom(monsters[i].dwId, strTemp1, dwTemp1);
  150. // yourDamages.FindDamageFrom(monsters[i].dwId, strTemp2, dwTemp2);
  151. // dwDamage = dwTemp1 + dwTemp2;
  152. // strValue.Format("[%d](%d):(%d)", dwDamage, dwTemp2,  dwTemp1);
  153. // m_lstMonsters.SetItemText(nIndex, 3, strValue);
  154. }
  155. for(i=0; i<m_lstMonsters.GetItemCount(); i++)
  156. {
  157. strValue = m_lstMonsters.GetItemText(i, 0);
  158. if(!strValue.IsEmpty() && -1 == monsters.FindId(strValue))
  159. m_lstMonsters.DeleteItem(i);
  160. }
  161. m_lstMonsters.Invalidate();
  162. refreshReq.bMonster = false;
  163. */
  164. }
  165. void CDlgEnv::RefreshItem()
  166. {
  167. /*
  168. CString strValue;
  169. LVFINDINFO info;
  170. int nIndex;
  171. int i;
  172. if(eTabItem != m_tabSwitch.GetCurSel())
  173. return;
  174. info.flags = LVFI_STRING;
  175. for(i=0; i<items.GetSize(); i++)
  176. {
  177. strValue.Format("%X", items[i].dwId);
  178. info.psz = strValue.LockBuffer();
  179. nIndex = m_lstItems.FindItem(&info);
  180. if(-1 == nIndex)
  181. {
  182. nIndex = m_lstItems.InsertItem(m_lstItems.GetItemCount(), strValue);
  183. }
  184. strValue.UnlockBuffer();
  185. strValue = mapItem.FindValue(items[i].wType, eItemName);
  186. m_lstItems.SetItemText(nIndex, 1, strValue);
  187. strValue.Format("%d", items[i].wAmount);
  188. m_lstItems.SetItemText(nIndex, 2, strValue);
  189. // strValue.Format("%s", mapItemType.FindValue(items[i].wType));
  190. // m_lstItems.SetItemText(nIndex, 3, strValue);
  191. }
  192. for(i=0; i<m_lstItems.GetItemCount(); i++)
  193. {
  194. strValue = m_lstItems.GetItemText(i, 0);
  195. if(!strValue.IsEmpty() && -1 == items.FindId(strValue))
  196. m_lstItems.DeleteItem(i);
  197. }
  198. m_lstItems.Invalidate();
  199. refreshReq.bItem = false;
  200. */
  201. }
  202. void CDlgEnv::RefreshPlayer()
  203. {
  204. /*
  205. CString strValue;
  206. LVFINDINFO info;
  207. int nIndex;
  208. int i;
  209. if(eTabPlayer != m_tabSwitch.GetCurSel())
  210. return;
  211. info.flags = LVFI_STRING;
  212. for(i=0; i<players.GetSize(); i++)
  213. {
  214. strValue.Format("%X", players[i].dwId);
  215. info.psz = strValue.LockBuffer();
  216. nIndex = m_lstPlayers.FindItem(&info);
  217. if(-1 == nIndex)
  218. {
  219. nIndex = m_lstPlayers.InsertItem(m_lstPlayers.GetItemCount(), strValue);
  220. }
  221. strValue.UnlockBuffer();
  222. m_lstPlayers.SetItemText(nIndex, 1, players[i].cName);
  223. strValue.Format("%s", mapJob.FindValue(players[i].wType));
  224. m_lstPlayers.SetItemText(nIndex, 2, strValue);
  225. strValue.Format("%s", mapSex.FindValue(players[i].bySex));
  226. m_lstPlayers.SetItemText(nIndex, 3, strValue);
  227. strValue.Format("(%d, %d)", players[i].pntTo.x, players[i].pntTo.y);
  228. m_lstPlayers.SetItemText(nIndex, 4, strValue);
  229. }
  230. for(i=0; i<m_lstPlayers.GetItemCount(); i++)
  231. {
  232. strValue = m_lstPlayers.GetItemText(i, 0);
  233. if(!strValue.IsEmpty() && -1 == players.FindId(strValue))
  234. m_lstPlayers.DeleteItem(i);
  235. }
  236. m_lstPlayers.Invalidate();
  237. refreshReq.bPlayer = false;
  238. */
  239. }