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

外挂编程

开发平台:

Visual C++

  1. // DlgYou.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ROA.h"
  5. #include "DlgYou.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CDlgYou dialog
  13. CDlgYou::CDlgYou(CWnd* pParent /*=NULL*/)
  14. : CDialog(CDlgYou::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CDlgYou)
  17. // NOTE: the ClassWizard will add member initialization here
  18. //}}AFX_DATA_INIT
  19. }
  20. void CDlgYou::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. //{{AFX_DATA_MAP(CDlgYou)
  24. DDX_Control(pDX, IDC_LST_STATUS, m_lstStatus);
  25. DDX_Control(pDX, IDC_LST_BASE_STATUS, m_lstBase);
  26. DDX_Control(pDX, IDC_LST_INV_SKILL, m_lstSkills);
  27. DDX_Control(pDX, IDC_LST_INV_EQUIP, m_lstEquips);
  28. DDX_Control(pDX, IDC_LST_INV_ITEMS, m_lstItems);
  29. DDX_Control(pDX, IDC_TAB_SWITCH, m_tabSwitch);
  30. //}}AFX_DATA_MAP
  31. }
  32. BEGIN_MESSAGE_MAP(CDlgYou, CDialog)
  33. //{{AFX_MSG_MAP(CDlgYou)
  34. ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_SWITCH, OnSelchangeTabSwitch)
  35. ON_WM_SIZE()
  36. ON_NOTIFY(NM_CLICK, IDC_LST_INV_ITEMS, OnClickLstInvItems)
  37. //}}AFX_MSG_MAP
  38. END_MESSAGE_MAP()
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CDlgYou message handlers
  41. enum
  42. {
  43. eTabBaseStatus = 0,
  44. eTabStatus = 1,
  45. eTabItems = 2,
  46. eTabEquipments = 3,
  47. eTabSkills = 4
  48. };
  49. enum
  50. {
  51. eName,
  52. eJob,
  53. eLevel,
  54. eJobLevel,
  55. eHp,
  56. eSp,
  57. eExp,
  58. eJobExp,
  59. eZenny,
  60. eWeight,
  61. };
  62. BOOL CDlgYou::OnInitDialog() 
  63. {
  64. CDialog::OnInitDialog();
  65. /*
  66. // TODO: Add extra initialization here
  67. m_tabSwitch.InsertItem(eTabBaseStatus, "Base Status");
  68. m_tabSwitch.InsertItem(eTabStatus, "Status");
  69. m_tabSwitch.InsertItem(eTabItems, "Items");
  70. m_tabSwitch.InsertItem(eTabEquipments, "Equipments");
  71. m_tabSwitch.InsertItem(eTabSkills, "Skills");
  72. m_lstBase.InsertColumn( 0, _T("Field"), LVCFMT_LEFT, 50 );
  73. m_lstBase.InsertColumn( 1, _T("Value"), LVCFMT_LEFT, 100);
  74. m_lstBase.InsertItem(eName, "Name");
  75. m_lstBase.InsertItem(eJob, "Job");
  76. m_lstBase.InsertItem(eLevel, "Base Level");
  77. m_lstBase.InsertItem(eJobLevel, "Job Level");
  78. m_lstBase.InsertItem(eHp, "HP/Max");
  79. m_lstBase.InsertItem(eSp, "SP/Max");
  80. m_lstBase.InsertItem(eExp, "Exp/Max");
  81. m_lstBase.InsertItem(eJobExp, "JobExp/Max");
  82. m_lstBase.InsertItem(eZenny, "Zenny");
  83. m_lstBase.InsertItem(eWeight, "Weight/Max");
  84. m_lstStatus.InsertColumn( 0, _T("Field"), LVCFMT_LEFT, 50 );
  85. m_lstStatus.InsertColumn( 1, _T("Value"), LVCFMT_LEFT, 100);
  86. m_lstItems.InsertColumn( 0, _T("Index"), LVCFMT_LEFT, 50 );
  87. m_lstItems.InsertColumn( 1, _T("Name"), LVCFMT_LEFT, 100);
  88. m_lstItems.InsertColumn( 2, _T("Amount"), LVCFMT_LEFT, 50 );
  89. m_lstItems.InsertColumn( 3, _T("Type"), LVCFMT_LEFT, 100 );
  90. m_lstEquips.InsertColumn( 0, _T("Index"), LVCFMT_LEFT, 50 );
  91. m_lstEquips.InsertColumn( 1, _T("Name"), LVCFMT_LEFT, 100);
  92. m_lstEquips.InsertColumn( 2, _T("Amount"), LVCFMT_LEFT, 50 );
  93. // m_lstEquips.InsertColumn( 3, _T("Type"), LVCFMT_LEFT, 100 );
  94. m_lstEquips.InsertColumn( 3, _T("Identified"), LVCFMT_LEFT, 50 );
  95. m_lstEquips.InsertColumn( 4, _T("EquipType"), LVCFMT_LEFT, 50 );
  96. m_lstEquips.InsertColumn( 5, _T("Equipped"), LVCFMT_LEFT, 50 );
  97. m_lstSkills.InsertColumn( 0, _T("Index"), LVCFMT_LEFT, 50 );
  98. m_lstSkills.InsertColumn( 1, _T("Name"), LVCFMT_LEFT, 100);
  99. m_lstSkills.InsertColumn( 2, _T("Level"), LVCFMT_LEFT, 50 );
  100. ListView_SetExtendedListViewStyleEx(m_lstBase.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  101. ListView_SetExtendedListViewStyleEx(m_lstStatus.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  102. ListView_SetExtendedListViewStyleEx(m_lstItems.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  103. ListView_SetExtendedListViewStyleEx(m_lstEquips.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  104. ListView_SetExtendedListViewStyleEx(m_lstSkills.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  105. OnSelchangeTabSwitch(NULL, NULL);
  106. */
  107. return TRUE;  // return TRUE unless you set the focus to a control
  108.               // EXCEPTION: OCX Property Pages should return FALSE
  109. }
  110. void CDlgYou::OnSelchangeTabSwitch(NMHDR* pNMHDR, LRESULT* pResult) 
  111. {
  112. int nIndex = m_tabSwitch.GetCurSel();
  113. m_lstBase.ShowWindow(nIndex == eTabBaseStatus ? SW_SHOWNORMAL:SW_HIDE);
  114. m_lstStatus.ShowWindow(nIndex == eTabStatus ? SW_SHOWNORMAL:SW_HIDE);
  115. m_lstItems.ShowWindow(nIndex == eTabItems ? SW_SHOWNORMAL:SW_HIDE);
  116. m_lstEquips.ShowWindow(nIndex == eTabEquipments ? SW_SHOWNORMAL:SW_HIDE);
  117. m_lstSkills.ShowWindow(nIndex == eTabSkills ? SW_SHOWNORMAL:SW_HIDE);
  118. switch(nIndex)
  119. {
  120. case eTabItems:
  121. case eTabEquipments:
  122. RefreshInventory();
  123. break;
  124. case eTabSkills:
  125. RefreshSkill();
  126. break;
  127. case eTabBaseStatus:
  128. RefreshBaseStatus();
  129. break;
  130. }
  131. if(pResult)
  132. *pResult = 0;
  133. }
  134. void CDlgYou::RefreshInventory()
  135. {
  136. /*
  137. if(eTabItems != m_tabSwitch.GetCurSel() && eTabEquipments != m_tabSwitch.GetCurSel())
  138. return;
  139. CString strValue;
  140. int nIndex;
  141. LVFINDINFO info;
  142. memset(&info, 0, sizeof(LVFINDINFO));
  143. info.flags = LVFI_STRING;
  144. for(int i=0; i<inventory.GetSize(); i++)
  145. {
  146. if((0 == inventory[i].wEquipType && eTabItems != m_tabSwitch.GetCurSel()) ||
  147.    (0 != inventory[i].wEquipType && eTabEquipments != m_tabSwitch.GetCurSel()))
  148.    continue;
  149. strValue.Format("%d", inventory[i].dwIndex);
  150. info.psz = strValue.LockBuffer();
  151. if(0 == inventory[i].wEquipType)
  152. {
  153. nIndex = m_lstItems.FindItem(&info);
  154. if(-1 == nIndex)
  155. {
  156. nIndex = m_lstItems.InsertItem(m_lstItems.GetItemCount(), strValue);
  157. }
  158. strValue.UnlockBuffer();
  159. strValue = mapItem.FindValue(inventory[i].dwId, eItemName);
  160. if(strValue !=  m_lstItems.GetItemText(i, 1))
  161. m_lstItems.SetItemText(nIndex, 1, strValue);
  162. strValue.Format("%d", inventory[i].wAmount);
  163. if(strValue !=  m_lstItems.GetItemText(i, 2))
  164. m_lstItems.SetItemText(nIndex, 2, strValue);
  165. strValue = mapItemType.FindValue(inventory[i].wType);
  166. if(strValue !=  m_lstItems.GetItemText(i, 3))
  167. m_lstItems.SetItemText(nIndex, 3, strValue);
  168. } else
  169. {
  170. nIndex = m_lstEquips.FindItem(&info);
  171. if(-1 == nIndex)
  172. {
  173. nIndex = m_lstEquips.InsertItem(m_lstEquips.GetItemCount(), strValue);
  174. }
  175. strValue.UnlockBuffer();
  176. strValue = mapItem.FindValue(inventory[i].dwId, eItemName);
  177. if(strValue !=  m_lstEquips.GetItemText(i, 1))
  178. m_lstEquips.SetItemText(nIndex, 1, strValue);
  179. strValue.Format("%d", inventory[i].wAmount);
  180. if(strValue !=  m_lstEquips.GetItemText(i, 2))
  181. m_lstEquips.SetItemText(nIndex, 2, strValue);
  182. // strValue = mapItem.FindValue(inventory[i].wType, eItemSlots);
  183. // if(strValue !=  m_lstEquips.GetItemText(i, 3))
  184. // m_lstEquips.SetItemText(nIndex, 3, strValue);
  185. strValue.Format("%s", (inventory[i].byIdentified!=0)?"Yes":"No");
  186. if(strValue !=  m_lstEquips.GetItemText(i, 3))
  187. m_lstEquips.SetItemText(nIndex, 3, strValue);
  188. strValue.Format("%s", mapEquipType.FindValue(inventory[i].wEquipType));
  189. if(strValue !=  m_lstEquips.GetItemText(i, 4))
  190. m_lstEquips.SetItemText(nIndex, 4, strValue);
  191. strValue.Format("%s", (inventory[i].byEquipped!=0)?"Yes":"No");
  192. if(strValue !=  m_lstEquips.GetItemText(i, 5))
  193. m_lstEquips.SetItemText(nIndex, 5, strValue);
  194. }
  195. }
  196. if(eTabItems == m_tabSwitch.GetCurSel())
  197. {
  198. for(i=0; i<m_lstItems.GetItemCount(); i++)
  199. {
  200. strValue = m_lstItems.GetItemText(i, 0);
  201. if(!strValue.IsEmpty() && -1 == inventory.FindIndex(atoi(strValue)))
  202. m_lstItems.DeleteItem(i);
  203. }
  204. m_lstItems.Invalidate();
  205. }
  206. if(eTabEquipments == m_tabSwitch.GetCurSel())
  207. {
  208. for(i=0; i<m_lstEquips.GetItemCount(); i++)
  209. {
  210. strValue = m_lstEquips.GetItemText(i, 0);
  211. if(!strValue.IsEmpty() && -1 == inventory.FindIndex(atoi(strValue)))
  212. m_lstEquips.DeleteItem(i);
  213. }
  214. m_lstEquips.Invalidate();
  215. }
  216. refreshReq.bInventory = false;
  217. */
  218. return;
  219. }
  220. void CDlgYou::OnSize(UINT nType, int cx, int cy) 
  221. {
  222. // TODO: Add your message handler code here
  223. if(SIZE_RESTORED == nType && ::IsWindow(m_tabSwitch.m_hWnd))
  224. {
  225. CRect rect;
  226. GetClientRect(rect);
  227. m_tabSwitch.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  228. m_tabSwitch.GetClientRect(rect);
  229. rect.DeflateRect(CSize(10, 10));
  230. rect.top += 10;
  231. m_lstBase.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  232. m_lstStatus.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  233. m_lstItems.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  234. m_lstEquips.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  235. m_lstSkills.SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
  236. }
  237. CDialog::OnSize(nType, cx, cy);
  238. }
  239. void CDlgYou::RefreshSkill()
  240. {
  241. /*
  242. if(eTabSkills != m_tabSwitch.GetCurSel())
  243. return;
  244. CString strValue;
  245. LVFINDINFO info;
  246. int nIndex;
  247. int i;
  248. info.flags = LVFI_STRING;
  249. for(i=0; i<skills.GetSize(); i++)
  250. {
  251. strValue.Format("%d", skills[i].dwIndex);
  252. info.psz = strValue.LockBuffer();
  253. nIndex = m_lstSkills.FindItem(&info);
  254. if(-1 == nIndex)
  255. {
  256. nIndex = m_lstSkills.InsertItem(m_lstSkills.GetItemCount(), strValue);
  257. }
  258. strValue.UnlockBuffer();
  259. m_lstSkills.SetItemText(nIndex, 1, mapSkill.FindValue(skills[i].dwId, eSkillAlias));
  260. strValue.Format("%d", skills[i].wLevel);
  261. m_lstSkills.SetItemText(nIndex, 2, strValue);
  262. }
  263. for(i=0; i<m_lstSkills.GetItemCount(); i++)
  264. {
  265. strValue = m_lstSkills.GetItemText(i, 0);
  266. if(!strValue.IsEmpty() && -1 == skills.FindIndex(strValue))
  267. m_lstSkills.DeleteItem(i);
  268. }
  269. m_lstSkills.Invalidate();
  270. refreshReq.bSkill = false;
  271. */
  272. }
  273. void CDlgYou::RefreshBaseStatus()
  274. {
  275. /*
  276. if(eTabBaseStatus != m_tabSwitch.GetCurSel())
  277. return;
  278. CString strValue;
  279. m_lstBase.SetItemText(eName, 1, you.cName);
  280. m_lstBase.SetItemText(eJob, 1, you.cJob);
  281. strValue.Format("%d", you.wLevel);
  282. m_lstBase.SetItemText(eLevel, 1, strValue);
  283. strValue.Format("%d", you.wJobLevel);
  284. m_lstBase.SetItemText(eJobLevel, 1, strValue);
  285. strValue.Format("%d/%d (%0.1f%%)", you.wHp, you.wHpMax, 
  286. (you.wHpMax==0) ? 0 : (double)you.wHp/you.wHpMax*100);
  287. m_lstBase.SetItemText(eHp, 1, strValue);
  288. strValue.Format("%d/%d (%0.1f%%)", you.wSp, you.wSpMax, 
  289. (you.wSpMax==0) ? 0 : (double)you.wSp/you.wSpMax*100);
  290. m_lstBase.SetItemText(eSp, 1, strValue);
  291. strValue.Format("%d/%d (%0.3f%%)", you.dwExp, you.dwExpMax, 
  292. (you.dwExpMax==0) ? 0 : (double)you.dwExp/you.dwExpMax*100);
  293. m_lstBase.SetItemText(eExp, 1, strValue);
  294. strValue.Format("%d/%d (%0.3f%%)", you.dwJobExp, you.dwJobExpMax, 
  295. (you.dwJobExpMax==0) ? 0 : (double)you.dwJobExp/you.dwJobExpMax*100);
  296. m_lstBase.SetItemText(eJobExp, 1, strValue);
  297. strValue.Format("%d", you.dwZenny);
  298. m_lstBase.SetItemText(eZenny, 1, strValue);
  299. strValue.Format("%d/%d (%0.2f%%)", you.dwWeight/10, you.dwWeightMax/10, 
  300. (you.dwWeightMax==0) ? 0 : (double)you.dwWeight/you.dwWeightMax);
  301. m_lstBase.SetItemText(eWeight, 1, strValue);
  302. m_lstBase.Invalidate();
  303. refreshReq.bYou = false;
  304. */
  305. }
  306. void CDlgYou::OnClickLstInvItems(NMHDR* pNMHDR, LRESULT* pResult) 
  307. {
  308. // TODO: Add your control notification handler code here
  309. *pResult = 0;
  310. }