Pastebin launched a little side project called HostCabi.net, check it out ;-)Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: SEnergy on Nov 5th, 2012  |  syntax: C++  |  size: 9.52 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <Windows.h>
  2. #include "resource.h"
  3. #include <commctrl.h>
  4. #include <Windowsx.h>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. #define TAB_HERO 0
  10. #define TAB_ABILITY1 1
  11. #define TAB_ABILITY2 2
  12. #define TAB_ABILITY3 3
  13. #define TAB_ABILITY4 4
  14.  
  15. #define TAB_SLOT 5
  16.  
  17. char TabName[TAB_SLOT][32] = {"Hero", "Ability 1", "Ability 2", "Ability 3", "Ability 4"};
  18.  
  19. HWND hTabs[TAB_SLOT];
  20.  
  21. #pragma comment(linker,"\"/manifestdependency:type='win32' \
  22. name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
  23. processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
  24.  
  25. #pragma comment(lib, "ComCtl32.Lib")
  26.  
  27. HINSTANCE g_hInst;
  28.  
  29. HWND hTab;
  30.  
  31. int TabControlInit(HWND hwndParent);
  32. HRESULT OnSize(HWND hwndTab, LPARAM lParam);
  33. void SetDefaultFont (HWND hwnd);
  34. void ShowTab(int a);
  35.  
  36. int iCTab;
  37.  
  38. BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
  39. BOOL CALLBACK TabOneDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
  40. BOOL CALLBACK TabTwoDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
  41. BOOL CALLBACK TabThreeDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
  42. BOOL CALLBACK TabFourDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
  43. BOOL CALLBACK TabFiveDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
  44.  
  45. #define MY_WM_INITDIALOG (WM_USER + 1)
  46.  
  47. struct HeroInfo
  48. {
  49.         string Name;
  50.         int Faction;
  51.         string Icon;
  52.         string Portrait;
  53.         string Model;
  54.         string PassiveEffect;
  55.         string RespawnEffect;
  56.         string SelectedSound;
  57.         string SelectedFlavourSound;
  58.         string ConfirmMoveSound;
  59.         string ConfirmAttackSound;
  60.         string NoManaSound;
  61.         string CooldownSound;
  62.         string AnnouncerSound;
  63.         string TauntedSound;
  64.         string TauntKillSound;
  65.         string Category;
  66.         int Diff;
  67.         int MoveSpeed;
  68.         int TurnRate;
  69.         int TurnSmoothing;
  70.         int MaxHP;
  71.         int MaxMana;
  72.         int Armor;
  73.         int MArmor;
  74.         int HPRegen;
  75.         int MRegen;
  76.         int Inventory[9];
  77.         int AttackDuration;
  78.         int AttackActionTime;
  79.         int AttackCooldown;
  80.         int DamageMin;
  81.         int DamageMax;
  82.         int AttackNumAnims;
  83.         int AttackOffset[3];
  84.         string AttackProjectile;
  85.         int AttackRange;
  86.         string AttackStartEffect;
  87.         string AttackImpactEffect;
  88.         string AttackActionEffect;
  89.         string AttackType;
  90.         string CombatType;
  91.         string PrimaryAtt;
  92.         int Stats[3];
  93.         float StatsPL[3];
  94.         string PreviewModel;
  95.         int PreviewPos[3];
  96.         int PreviewAngles[3];
  97.         int PreviewScale;
  98.         string StoreModel;
  99.         int StorePos[3];
  100.         int StoreAngles[3];
  101.         int StoreScale;
  102.         string RItem[12];
  103. };
  104.  
  105. HeroInfo Hero;
  106.  
  107. string Faction[2] = {"Legion", "Hellbourne"};
  108.  
  109. INT WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR lpCmdLine, INT nShowCmd)
  110. {
  111.         UNREFERENCED_PARAMETER(hPrevInst);
  112.         UNREFERENCED_PARAMETER(lpCmdLine);
  113.  
  114.         g_hInst = hInst;
  115.  
  116.         WNDCLASSEX wClass;
  117.         ZeroMemory(&wClass,sizeof(WNDCLASSEX));
  118.         wClass.cbClsExtra=0;
  119.         wClass.cbSize=sizeof(WNDCLASSEX);
  120.         wClass.cbWndExtra=DLGWINDOWEXTRA;
  121.         wClass.hbrBackground=(HBRUSH)(COLOR_BTNFACE + 1);
  122.         wClass.hCursor=LoadCursor(NULL,IDC_ARROW);
  123.         wClass.hIcon=LoadIcon(hInst, (LPCSTR)IDI_ICON1);
  124.         wClass.hIconSm=wClass.hIcon;
  125.         wClass.hInstance=hInst;
  126.         wClass.lpfnWndProc=(WNDPROC)MainDlgProc;
  127.         wClass.lpszClassName="HON HC";
  128.         wClass.lpszMenuName=NULL;
  129.         wClass.style=CS_HREDRAW | CS_VREDRAW;
  130.  
  131.         if(!RegisterClassEx(&wClass))
  132.         {
  133.                 int nResult = GetLastError();
  134.                 MessageBox(NULL, "Window Class Creation Failed!", NULL, MB_ICONERROR | MB_OK);
  135.                 return 0;
  136.         }
  137.  
  138.         HWND hWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_MAIN), NULL, NULL);
  139.  
  140.         if(!hWnd)
  141.         {
  142.                 int nResult = GetLastError();
  143.                 MessageBox(NULL, "Dialog Creation Failed!", NULL, MB_ICONERROR | MB_OK);
  144.                 return 0;
  145.         }
  146.  
  147.         hTab = GetDlgItem(hWnd, IDC_TABCONTROL);
  148.  
  149.         int TCW = TabControlInit(hWnd);
  150.         if(TCW == 0)
  151.         {
  152.                 MessageBox(hWnd, "Cannot initialize Tab Control!", NULL, MB_ICONERROR);
  153.                 return 0;
  154.         }
  155.  
  156.         MSG msg;
  157.         ZeroMemory(&msg,sizeof(MSG));
  158.  
  159.         while(GetMessage(&msg, NULL, 0, 0) == TRUE)
  160.         {
  161.                 if(!IsDialogMessage(hWnd, &msg))
  162.                 {
  163.                         TranslateMessage(&msg);
  164.                         DispatchMessage(&msg);
  165.                 }
  166.         }
  167.         return msg.wParam;
  168. }
  169.  
  170. BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  171. {
  172.         switch(msg)
  173.         {
  174.         case MY_WM_INITDIALOG:
  175.                 {
  176.                         ShowWindow(hTabs[0], TRUE);
  177.                         iCTab = 0;
  178.                 }
  179.                 break;
  180.         case WM_SIZE:
  181.                 {
  182.                         OnSize(hTab, lParam);
  183.                         break;
  184.                 }
  185.         case WM_NOTIFY:
  186.                 {
  187.                         LPNMHDR lpnmhdr = (LPNMHDR)lParam;
  188.  
  189.                         if(lpnmhdr -> code == TCN_SELCHANGE)
  190.                         {
  191.                                 int iTabItem = TabCtrl_GetCurSel(hTab);
  192.                                
  193.                                 switch (iTabItem)
  194.                                 {
  195.                                 case TAB_HERO:
  196.                                         {
  197.                                                 ShowTab(iTabItem);
  198.                                                 break;
  199.                                         }
  200.                                 case TAB_ABILITY1:
  201.                                         {
  202.                                                 ShowTab(iTabItem);
  203.                                                 break;
  204.                                         }
  205.                                 case TAB_ABILITY2:
  206.                                         {
  207.                                                 ShowTab(iTabItem);
  208.                                                 break;
  209.                                         }
  210.                                 case TAB_ABILITY3:
  211.                                         {
  212.                                                 ShowTab(iTabItem);
  213.                                                 break;
  214.                                         }
  215.                                 case TAB_ABILITY4:
  216.                                         {
  217.                                                 ShowTab(iTabItem);
  218.                                                 break;
  219.                                         }
  220.                                 }
  221.                         }
  222.                         break;
  223.                 }
  224.         case WM_CREATE:
  225.                 {
  226.                         PostMessage(hWnd, MY_WM_INITDIALOG, 0, 0);
  227.                 }
  228.                 break;
  229.         case WM_DESTROY:
  230.                 {
  231.                         PostQuitMessage(0);
  232.                         return 0;
  233.                 }
  234.                 break;
  235.         case WM_COMMAND:
  236.                 {
  237.                         switch(LOWORD(wParam))
  238.                         {
  239.  
  240.                         }
  241.                         break;
  242.                 }
  243.         }
  244.         return DefWindowProc(hWnd, msg, wParam, lParam);
  245. }
  246.  
  247. int TabControlInit(HWND hwndParent)
  248. {
  249.         INITCOMMONCONTROLSEX icex;
  250.         icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
  251.         icex.dwICC = ICC_TAB_CLASSES;
  252.         InitCommonControlsEx(&icex);
  253.        
  254.         RECT rcClient;
  255.         GetClientRect(hwndParent, &rcClient);
  256.  
  257.         if (hTab == NULL)
  258.                 return 0;
  259.  
  260.         if (!SetWindowPos(hTab, HWND_TOP, 0, 0, rcClient.right, rcClient.bottom, SWP_SHOWWINDOW))
  261.                 return 0;
  262.  
  263.         SetDefaultFont(hTab);
  264.        
  265.         TCITEM tie;
  266.         tie.mask = TCIF_TEXT;
  267.  
  268.         for (int i = 0; i < TAB_SLOT; i++)
  269.         {
  270.                 tie.pszText = TabName[i];
  271.                 if (TabCtrl_InsertItem(hTab, i, &tie) == -1)
  272.                 {
  273.                         DestroyWindow(hTab);
  274.                         return 0;
  275.                 }
  276.         }
  277.         RECT rcTab;
  278.         TabCtrl_GetItemRect(hTab, 0, &rcTab);
  279.         hTabs[0] = CreateDialog(g_hInst, MAKEINTRESOURCE(TAB_ONE), hTab, TabOneDlgProc);
  280.         if (!SetWindowPos(hTabs[0], HWND_TOP, rcClient.left+1, rcClient.top+21, rcClient.right, rcClient.bottom, SWP_SHOWWINDOW))
  281.                 return 0;
  282.         hTabs[1] = CreateDialog(g_hInst, MAKEINTRESOURCE(TAB_TWO), hTab, TabTwoDlgProc);
  283.         if (!SetWindowPos(hTabs[1], HWND_TOP, rcClient.left+1, rcClient.top+21, rcClient.right, rcClient.bottom, SWP_SHOWWINDOW))
  284.                 return 0;
  285.         hTabs[2] = CreateDialog(g_hInst, MAKEINTRESOURCE(TAB_THREE), hTab, TabThreeDlgProc);
  286.         if (!SetWindowPos(hTabs[2], HWND_TOP, rcClient.left+1, rcClient.top+21, rcClient.right, rcClient.bottom, SWP_SHOWWINDOW))
  287.                 return 0;
  288.         hTabs[3] = CreateDialog(g_hInst, MAKEINTRESOURCE(TAB_FOUR), hTab, TabFourDlgProc);
  289.         if (!SetWindowPos(hTabs[3], HWND_TOP, rcClient.left+1, rcClient.top+21, rcClient.right, rcClient.bottom, SWP_SHOWWINDOW))
  290.                 return 0;
  291.         hTabs[4] = CreateDialog(g_hInst, MAKEINTRESOURCE(TAB_FIVE), hTab, TabFiveDlgProc);
  292.         if (!SetWindowPos(hTabs[4], HWND_TOP, rcClient.left+1, rcClient.top+21, rcClient.right, rcClient.bottom, SWP_SHOWWINDOW))
  293.                 return 0;
  294.         for(int a = 0; a < TAB_SLOT; a++)
  295.         {
  296.                 ShowWindow(hTabs[a], FALSE);
  297.         }
  298.         return 1;
  299. }
  300.  
  301. HRESULT OnSize(HWND hwndTab, LPARAM lParam)
  302. {
  303.         if (hwndTab == NULL)
  304.                 return E_INVALIDARG;
  305.  
  306.          if (!SetWindowPos(hwndTab, HWND_TOP, 0, 0, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), SWP_SHOWWINDOW))
  307.                 return E_FAIL;
  308.  
  309.         return S_OK;
  310. }
  311.  
  312. void SetDefaultFont (HWND hwnd)
  313. {
  314.         SendMessage(hwnd, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)true);
  315. }
  316.  
  317. void ShowTab(int a)
  318. {
  319.         ShowWindow(hTabs[iCTab], FALSE);
  320.         ShowWindow(hTabs[a], TRUE);
  321.         iCTab = a;
  322. }
  323.  
  324.  
  325.  
  326. BOOL CALLBACK TabOneDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  327. {
  328.         switch(msg)
  329.         {
  330.         case MY_WM_INITDIALOG:
  331.                 {
  332.                         SendMessage(GetDlgItem(hWnd, IDC_FACTION), CB_ADDSTRING, NULL, (LPARAM)Faction[0].c_str());
  333.                         SendMessage(GetDlgItem(hWnd, IDC_FACTION), CB_ADDSTRING, NULL, (LPARAM)Faction[1].c_str());
  334.                         SendMessage(GetDlgItem(hWnd, IDC_FACTION), CB_SETCURSEL, (WPARAM)1, NULL);
  335.                 }
  336.                 break;
  337.         case WM_CREATE:
  338.                 {
  339.                         PostMessage(hWnd, MY_WM_INITDIALOG, 0, 0);
  340.                 }
  341.                 break;
  342.         case WM_COMMAND:
  343.                 {
  344.                         switch(LOWORD(wParam))
  345.                         {
  346.  
  347.                         }
  348.                         break;
  349.                 }
  350.         }
  351.         return DefWindowProc(hWnd, msg, wParam, lParam);
  352. }
  353.  
  354. BOOL CALLBACK TabTwoDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  355. {
  356.         switch(msg)
  357.         {
  358.         case MY_WM_INITDIALOG:
  359.                 {
  360.                 }
  361.                 break;
  362.         case WM_CREATE:
  363.                 {
  364.                         PostMessage(hWnd, MY_WM_INITDIALOG, 0, 0);
  365.                 }
  366.                 break;
  367.         case WM_COMMAND:
  368.                 {
  369.                         switch(LOWORD(wParam))
  370.                         {
  371.  
  372.                         }
  373.                         break;
  374.                 }
  375.         }
  376.         return DefWindowProc(hWnd, msg, wParam, lParam);
  377. }
  378.  
  379. BOOL CALLBACK TabThreeDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  380. {
  381.         switch(msg)
  382.         {
  383.         case MY_WM_INITDIALOG:
  384.                 {
  385.                 }
  386.                 break;
  387.         case WM_CREATE:
  388.                 {
  389.                         PostMessage(hWnd, MY_WM_INITDIALOG, 0, 0);
  390.                 }
  391.                 break;
  392.         case WM_COMMAND:
  393.                 {
  394.                         switch(LOWORD(wParam))
  395.                         {
  396.  
  397.                         }
  398.                         break;
  399.                 }
  400.         }
  401.         return DefWindowProc(hWnd, msg, wParam, lParam);
  402. }
  403.  
  404. BOOL CALLBACK TabFourDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  405. {
  406.         switch(msg)
  407.         {
  408.         case MY_WM_INITDIALOG:
  409.                 {
  410.                 }
  411.                 break;
  412.         case WM_CREATE:
  413.                 {
  414.                         PostMessage(hWnd, MY_WM_INITDIALOG, 0, 0);
  415.                 }
  416.                 break;
  417.         case WM_COMMAND:
  418.                 {
  419.                         switch(LOWORD(wParam))
  420.                         {
  421.  
  422.                         }
  423.                         break;
  424.                 }
  425.         }
  426.         return DefWindowProc(hWnd, msg, wParam, lParam);
  427. }
  428.  
  429. BOOL CALLBACK TabFiveDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  430. {
  431.         switch(msg)
  432.         {
  433.         case MY_WM_INITDIALOG:
  434.                 {
  435.                 }
  436.                 break;
  437.         case WM_CREATE:
  438.                 {
  439.                         PostMessage(hWnd, MY_WM_INITDIALOG, 0, 0);
  440.                 }
  441.                 break;
  442.         case WM_COMMAND:
  443.                 {
  444.                         switch(LOWORD(wParam))
  445.                         {
  446.  
  447.                         }
  448.                         break;
  449.                 }
  450.         }
  451.         return DefWindowProc(hWnd, msg, wParam, lParam);
  452. }