亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? winmain.cpp

?? 用DirectX編寫(xiě)RPG游戲-Programming.Role.Playing.Games.with.DirectX
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**************************************************
WinMain.cpp
Chapter 16 Master Spell List Editor

Programming Role-Playing Games with DirectX
by Jim Adams (01 Jan 2002)
**************************************************/

#include <windows.h>
#include <stdio.h>
#include "resource.h"

#include "MSL.h"

// Application variables ////////////////////////////////////////////
HWND g_hWnd;                   // Window handle
char g_szClass[] = "MSLEDIT";  // Class name

OPENFILENAME g_ofn;            // Open/Save dialog data
char g_MSLFile[MAX_PATH];      // Filename for spell file

sSpell g_Spells[64];           // Spell list
long   g_EditSpell;            // Spell to modify

// Application prototypes ///////////////////////////////////////////
int  PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow);
long FAR PASCAL WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK ModifyDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

BOOL UpdateEntry(HWND hWnd, long SpellNum);
BOOL LoadSpells(char *Filename);
BOOL NewMSL();
BOOL LoadMSL();
BOOL SaveMSL();

// Application //////////////////////////////////////////////////////
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow)
{
  WNDCLASS wc;
  MSG      Msg;

  // Register window class
  wc.style         = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc   = WindowProc;
  wc.cbClsExtra    = 0;
  wc.cbWndExtra    = DLGWINDOWEXTRA;
  wc.hInstance     = hInst;
  wc.hIcon         = LoadIcon(hInst, IDI_APPLICATION);
  wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
  wc.lpszMenuName  = NULL;
  wc.lpszClassName = g_szClass;
  RegisterClass(&wc);

  // Create the dialog box window and show it
  g_hWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_EDIT), 0, NULL);
  UpdateWindow(g_hWnd);
  ShowWindow(g_hWnd, nCmdShow);

  // Force a load of spells from default.MSL
  LoadSpells("..\\Data\\Default.MSL");

  // Message loop
  while(GetMessage(&Msg, NULL, 0, 0)) {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
  }

  // Clean up
  UnregisterClass(g_szClass, hInst);

  return 0;
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  int Selection;
  char Text[256];

  switch(uMsg) {
    case WM_COMMAND:
      switch(LOWORD(wParam)) {

        // New MSL file
        case IDC_NEW: 
          NewMSL(); 
          break;

        // Load a MSL file
        case IDC_LOAD: 
          LoadMSL();
          break;

        // Save a MSL file
        case IDC_SAVE: 
          SaveMSL();
          break;

        // Clear an entry
        case IDC_CLEAR:
          // See if a spell was selected
          if((Selection = SendMessage(GetDlgItem(g_hWnd, IDC_SPELLS), LB_GETCURSEL, 0, 0)) == LB_ERR)
            break;

          ZeroMemory(&g_Spells[Selection], sizeof(sSpell));

          // Reset spell damage and cure classes
          g_Spells[Selection].DmgClass = -1;
          g_Spells[Selection].CureClass = -1;

          // Reset sounds
          g_Spells[Selection].MeshSound[0] = -1;
          g_Spells[Selection].MeshSound[1] = -1;
          g_Spells[Selection].MeshSound[2] = -1;

          SendMessage(GetDlgItem(g_hWnd, IDC_SPELLS), LB_DELETESTRING, Selection, 0);
          sprintf(Text, "%5lu: %s", Selection, g_Spells[Selection].Name);
          SendMessage(GetDlgItem(g_hWnd, IDC_SPELLS), LB_INSERTSTRING, Selection, (LPARAM)Text);
          break;

        // Edit an entry
        case IDC_SPELLS:
          if(HIWORD(wParam) != LBN_DBLCLK)
            break;
        case IDC_EDIT:
          // See if a spell was selected
          if((Selection = SendMessage(GetDlgItem(g_hWnd, IDC_SPELLS), LB_GETCURSEL, 0, 0)) == LB_ERR)
            break;

          // Set the spel to edit
          g_EditSpell = Selection;

          // Call the modify spell dialog
          DialogBox(NULL, MAKEINTRESOURCE(IDD_MODIFY), hWnd, ModifyDialogProc);

          // Update spell
          SendMessage(GetDlgItem(g_hWnd, IDC_SPELLS), LB_DELETESTRING, Selection, 0);
          sprintf(Text, "%5lu: %s", Selection, g_Spells[Selection].Name);
          SendMessage(GetDlgItem(g_hWnd, IDC_SPELLS), LB_INSERTSTRING, Selection, (LPARAM)Text);
          break;
      }
      break;
    
    case WM_CREATE:
      // Initialize the save/load dialog box info
      ZeroMemory(&g_ofn, sizeof(OPENFILENAME));
      g_ofn.lStructSize = sizeof(OPENFILENAME);
      g_ofn.nMaxFile = MAX_PATH;
      g_ofn.nMaxFileTitle = MAX_PATH;
      g_ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT | OFN_OVERWRITEPROMPT;

      // Set default MSL filename
      strcpy(g_MSLFile, "..\\Data\\Default.MSL");

      break;

    case WM_DESTROY:
      PostQuitMessage(0);
      break;

    default: return DefWindowProc(hWnd, uMsg, wParam, lParam);
  }

  return 0;
}

BOOL CALLBACK ModifyDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  WORD Effects[8] = {
         IDC_HEALTH, IDC_MANA,
         IDC_CURE, IDC_CAUSE, IDC_RAISE, IDC_KILL,
         IDC_DISPEL, IDC_TELEPORT 
       };
  WORD Targets[3] = {
         IDC_SINGLE, IDC_SELF, IDC_AREA
       };
  WORD Positions[18] = {
         IDC_NONE1, IDC_CASTER1, IDC_TOTARGET1, IDC_TOCASTER1, IDC_TARGET1, IDC_SCALE1,
         IDC_NONE2, IDC_CASTER2, IDC_TOTARGET2, IDC_TOCASTER2, IDC_TARGET2, IDC_SCALE2,
         IDC_NONE3, IDC_CASTER3, IDC_TOTARGET3, IDC_TOCASTER3, IDC_TARGET3, IDC_SCALE3,
       };
  WORD Loops[3] = { IDC_LOOP1, IDC_LOOP2, IDC_LOOP3 };
  char Text[32];
  long i;

  switch(uMsg) {
    case WM_INITDIALOG:
      // Return an error if there's no spell to modify
      if(g_EditSpell >= 64) {
        EndDialog(hWnd, FALSE);
        return FALSE;
      }

      // Display spell number
      sprintf(Text, "%lu", g_EditSpell);
      SetWindowText(GetDlgItem(hWnd, IDC_NUM), Text);

      // Display text entries
      SetWindowText(GetDlgItem(hWnd, IDC_NAME), g_Spells[g_EditSpell].Name);
      SetWindowText(GetDlgItem(hWnd, IDC_DESCRIPTION), g_Spells[g_EditSpell].Description);

      // Display numerical entries
      sprintf(Text, "%ld", g_Spells[g_EditSpell].DmgClass);
      SetWindowText(GetDlgItem(hWnd, IDC_DMGCLASS), Text);
      sprintf(Text, "%ld", g_Spells[g_EditSpell].CureClass);
      SetWindowText(GetDlgItem(hWnd, IDC_CURECLASS), Text);

      sprintf(Text, "%lu", g_Spells[g_EditSpell].Cost);
      SetWindowText(GetDlgItem(hWnd, IDC_COST), Text);

      sprintf(Text, "%lf", g_Spells[g_EditSpell].Distance);
      SetWindowText(GetDlgItem(hWnd, IDC_DISTANCE), Text);

      sprintf(Text, "%lu", g_Spells[g_EditSpell].Chance);
      SetWindowText(GetDlgItem(hWnd, IDC_CHANCE), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].Value[0]);
      SetWindowText(GetDlgItem(hWnd, IDC_VALUE1), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].Value[1]);
      SetWindowText(GetDlgItem(hWnd, IDC_VALUE2), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].Value[2]);
      SetWindowText(GetDlgItem(hWnd, IDC_VALUE3), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].Value[3]);
      SetWindowText(GetDlgItem(hWnd, IDC_VALUE4), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].Range);
      SetWindowText(GetDlgItem(hWnd, IDC_RANGE), Text);

      sprintf(Text, "%lu", g_Spells[g_EditSpell].MeshNum[0]);
      SetWindowText(GetDlgItem(hWnd, IDC_MESH1), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].MeshSpeed[0]);
      SetWindowText(GetDlgItem(hWnd, IDC_SPEED1), Text);
      sprintf(Text, "%ld", g_Spells[g_EditSpell].MeshSound[0]);
      SetWindowText(GetDlgItem(hWnd, IDC_SOUND1), Text);

      sprintf(Text, "%lu", g_Spells[g_EditSpell].MeshNum[1]);
      SetWindowText(GetDlgItem(hWnd, IDC_MESH2), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].MeshSpeed[1]);
      SetWindowText(GetDlgItem(hWnd, IDC_SPEED2), Text);
      sprintf(Text, "%ld", g_Spells[g_EditSpell].MeshSound[1]);
      SetWindowText(GetDlgItem(hWnd, IDC_SOUND2), Text);

      sprintf(Text, "%lu", g_Spells[g_EditSpell].MeshNum[2]);
      SetWindowText(GetDlgItem(hWnd, IDC_MESH3), Text);
      sprintf(Text, "%lf", g_Spells[g_EditSpell].MeshSpeed[2]);
      SetWindowText(GetDlgItem(hWnd, IDC_SPEED3), Text);
      sprintf(Text, "%ld", g_Spells[g_EditSpell].MeshSound[2]);
      SetWindowText(GetDlgItem(hWnd, IDC_SOUND3), Text);

      // Display selection entries
      SendMessage(GetDlgItem(hWnd, Effects[g_Spells[g_EditSpell].Effect]), BM_SETCHECK, 1, 0);
      SendMessage(GetDlgItem(hWnd, Targets[g_Spells[g_EditSpell].Target]), BM_SETCHECK, 1, 0);
      SendMessage(GetDlgItem(hWnd, Positions[g_Spells[g_EditSpell].MeshPos[0]]), BM_SETCHECK, 1, 0);
      SendMessage(GetDlgItem(hWnd, Positions[g_Spells[g_EditSpell].MeshPos[1]+6]), BM_SETCHECK, 1, 0);
      SendMessage(GetDlgItem(hWnd, Positions[g_Spells[g_EditSpell].MeshPos[2]+12]), BM_SETCHECK, 1, 0);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线观看一区二区| 亚洲欧美日韩在线| 欧美白人最猛性xxxxx69交| 欧美三级欧美一级| 欧美日韩国产一级二级| 欧美视频一区二区在线观看| 色94色欧美sute亚洲线路一ni| 99久久国产综合精品女不卡| 成人国产视频在线观看| 99re成人在线| 色狠狠综合天天综合综合| 色综合视频在线观看| 欧洲一区二区av| 欧美日韩一卡二卡| 欧美精品亚洲二区| 欧美电影免费提供在线观看| 精品国产一区二区三区四区四| 欧美精品1区2区| 精品久久久久99| 国产日韩欧美不卡| 中文字幕在线观看一区二区| 亚洲人成人一区二区在线观看| 一区二区高清在线| 天堂在线亚洲视频| 国内久久精品视频| 成人国产精品免费网站| 日韩一区二区精品| 精品电影一区二区| 中文无字幕一区二区三区| 国产精品理论在线观看| 亚洲影视在线播放| 日本不卡高清视频| 成人性生交大片| 欧美私人免费视频| 日韩欧美一区二区久久婷婷| 国产人成亚洲第一网站在线播放| 成人免费一区二区三区在线观看| 亚洲综合激情另类小说区| 偷窥少妇高潮呻吟av久久免费| 麻豆91精品视频| a在线播放不卡| 欧美猛男男办公室激情| 久久综合久久99| 亚洲色图在线视频| 日韩成人精品在线| 成人午夜视频在线| 欧美丰满嫩嫩电影| 中文字幕乱码一区二区免费| 亚洲线精品一区二区三区 | 老司机精品视频线观看86| 国产xxx精品视频大全| 在线国产亚洲欧美| 欧美精品一区二区三区在线播放| 亚洲免费在线电影| 久久超级碰视频| 色噜噜狠狠一区二区三区果冻| 精品日韩在线观看| 亚洲午夜久久久久久久久电影院| 国内国产精品久久| 欧美日韩国产综合久久 | 国产精品18久久久久久久久| 在线影视一区二区三区| 国产日韩av一区二区| 日日夜夜免费精品视频| av在线综合网| 久久综合久久99| 三级成人在线视频| 色综合久久久久综合体桃花网| 精品不卡在线视频| 五月婷婷激情综合网| 99精品偷自拍| 国产视频一区在线观看| 免费观看日韩av| 欧美在线观看视频在线| 国产精品欧美久久久久无广告| 青青草成人在线观看| 91黄色免费观看| 自拍偷拍亚洲欧美日韩| 国产精一区二区三区| 日韩一区二区视频| 偷拍一区二区三区四区| 91碰在线视频| 国产精品私房写真福利视频| 久久成人精品无人区| 欧美一区二区日韩一区二区| 亚洲一线二线三线久久久| av男人天堂一区| 国产精品污污网站在线观看| 国产一区二区三区在线观看免费 | 国产一区在线精品| 日韩一区二区三区电影在线观看| 亚洲一区二区在线免费看| caoporen国产精品视频| 中文字幕精品三区| 成人性色生活片| 中文字幕欧美日韩一区| 国产成人午夜电影网| 久久精品欧美一区二区三区不卡| 裸体在线国模精品偷拍| 日韩一区二区在线观看视频播放| 婷婷亚洲久悠悠色悠在线播放| 欧美日韩一区三区| 亚洲va天堂va国产va久| 欧美久久久久久久久久| 日本视频在线一区| 91精品国产91久久久久久一区二区 | 久久精品夜色噜噜亚洲aⅴ| 精品一区二区在线播放| 日韩视频一区二区在线观看| 美女脱光内衣内裤视频久久网站| 欧美一区日本一区韩国一区| 免费高清不卡av| 精品成人一区二区三区四区| 狠狠色丁香婷综合久久| 国产情人综合久久777777| 成人18精品视频| 亚洲欧美日韩国产综合在线| 色婷婷综合久久久| 亚洲午夜三级在线| 欧美日韩亚洲另类| 免费在线观看成人| 久久这里都是精品| 成人一二三区视频| 亚洲毛片av在线| 欧美美女视频在线观看| 青草av.久久免费一区| 精品福利二区三区| 国产a精品视频| 亚洲精品欧美综合四区| 欧美日本国产一区| 国内外成人在线视频| 中文字幕日本不卡| 欧美视频三区在线播放| 久久99九九99精品| 国产精品免费aⅴ片在线观看| 91丨porny丨最新| 亚洲成国产人片在线观看| 欧美xxx久久| 成人爱爱电影网址| 午夜久久久影院| 欧美一区二区三区视频在线观看| 久久综合色8888| 成人免费毛片嘿嘿连载视频| 亚洲欧美成人一区二区三区| 欧美日韩国产区一| 韩国v欧美v亚洲v日本v| 最近日韩中文字幕| 91精品国产免费| 成人一级黄色片| 肉肉av福利一精品导航| 国产日韩v精品一区二区| 色偷偷久久人人79超碰人人澡 | 久久精品噜噜噜成人88aⅴ| 欧美国产日韩亚洲一区| 欧美日韩中文一区| 国产91丝袜在线观看| 夜夜爽夜夜爽精品视频| 精品日韩在线一区| 欧洲精品在线观看| 国产另类ts人妖一区二区| 亚洲一区在线视频观看| 国产午夜精品一区二区三区四区| 欧美中文字幕一区| 国产成人福利片| 日韩精品一二三四| 中文字幕日韩一区| 久久网站最新地址| 欧美日韩国产综合视频在线观看 | 91亚洲男人天堂| 久久福利资源站| 亚洲国产sm捆绑调教视频| 亚洲国产成人一区二区三区| 日韩午夜在线观看视频| 色天使色偷偷av一区二区| 国产福利一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲综合偷拍欧美一区色| 国产肉丝袜一区二区| 日韩欧美一卡二卡| 欧美日韩在线播放| 色综合天天综合狠狠| 国产盗摄一区二区| 麻豆精品蜜桃视频网站| 亚洲成人免费电影| 亚洲欧美一区二区三区极速播放| xfplay精品久久| 日韩一区二区在线观看视频播放| 色88888久久久久久影院野外| 国产91精品久久久久久久网曝门| 蜜桃视频第一区免费观看| 亚洲动漫第一页| 一区二区三区美女| 亚洲男同1069视频| 国产精品久久毛片| 国产情人综合久久777777| 久久精品视频一区二区三区| 精品国产99国产精品| 欧美成人精品高清在线播放| 日韩一区二区三区电影| 日韩一卡二卡三卡四卡|