mpqwindow.h

来自「骨骼动画....把魔兽模型解出的代码..」· C头文件 代码 · 共 154 行

H
154
字号
//+-----------------------------------------------------------------------------
//| Inclusion guard
//+-----------------------------------------------------------------------------
#ifndef MAGOS_MPQ_WINDOW_H
#define MAGOS_MPQ_WINDOW_H


//+-----------------------------------------------------------------------------
//| Included files
//+-----------------------------------------------------------------------------
#include "MainWindow.h"
#include "Mpq.h"


//+-----------------------------------------------------------------------------
//| Pre-declared classes
//+-----------------------------------------------------------------------------
struct FILE_NODE;


//+-----------------------------------------------------------------------------
//| File node connection structure
//+-----------------------------------------------------------------------------
struct FILE_NODE_CONNECTION
{
	FILE_NODE_CONNECTION()
	{
		FirstChildNode = NULL;
		LastChildNode = NULL;
	}

	FILE_NODE* FirstChildNode;
	FILE_NODE* LastChildNode;
};


//+-----------------------------------------------------------------------------
//| File node structure
//+-----------------------------------------------------------------------------
struct FILE_NODE
{
	FILE_NODE()
	{
		IsFolder = FALSE;
		IconCollectionIndex = INVALID_INDEX;

		FileNameAndPath = "";
		FileName = "";
		Extention = "";

		FilterData.FilterList.resize(Filter.GetNrOfFilters(), FALSE);

		NextNode = NULL;
		PreviousNode = NULL;
		ParentNode = NULL;

		TreeViewItem = NULL;
	}

	BOOL IsFolder;
	INT IconCollectionIndex;

	std::string FileNameAndPath;
	std::string FileName;
	std::string Extention;

	FILTER_DATA FilterData;

	FILE_NODE* NextNode;
	FILE_NODE* PreviousNode;
	FILE_NODE* ParentNode;

	FILE_NODE_CONNECTION FileConnection;
	FILE_NODE_CONNECTION FolderConnection;

	HTREEITEM TreeViewItem;
};


//+-----------------------------------------------------------------------------
//| Mpq window class
//+-----------------------------------------------------------------------------
class MPQ_WINDOW : public WINDOW_FRAME
{
	public:
		CONSTRUCTOR MPQ_WINDOW();
		DESTRUCTOR ~MPQ_WINDOW();

		virtual BOOL Create();
		virtual VOID Destroy();

		virtual LRESULT MessageHandler(UINT Message, WPARAM W, LPARAM L);
		virtual LRESULT MenuHandler(WORD MenuItem);
		virtual LRESULT ControlHandler(HWND Control, WORD Code);
		virtual LRESULT NotifyHandler(HWND Control, UINT Code, NMHDR* Header);
		virtual LRESULT TreeViewHandler(UINT Code, NM_TREEVIEW* TreeViewHeader);

		BOOL OpenAllMpqArchives();
		VOID CloseAllMpqArchives();

		BOOL IsMpqExtention(CONST std::string& Extention);

		BOOL OpenMpqByName(CONST std::string& FileName);

	protected:
		BOOL OpenMpq();
		BOOL CloseMpq();

		VOID UpdateWindowStatus();

		BOOL OpenMpqFile(CONST std::string& FileName);
		BOOL ExportMpqFile(CONST std::string& FileName, CONST std::string& RealFileName);

		VOID UpdateTreeView();
		VOID ResizeTreeView();

		BOOL LoadListFile(CONST std::string& FileName);
		BOOL AddFileToFileTree(CONST std::string& FileName);
		VOID RemoveFileTree(FILE_NODE* FileNode);

		FILE_NODE* FindChild(FILE_NODE* FileNode, FILE_NODE_CONNECTION* Connection, CONST std::string& Name);
		FILE_NODE* CreateFolder(FILE_NODE* FileNode, CONST std::string& Name);
		VOID AddChild(FILE_NODE* FileNode, FILE_NODE_CONNECTION* Connection, FILE_NODE* ChildNode);
		VOID UpdateFilterData(FILE_NODE* FileNode, FILTER_DATA& FilterData);

		VOID SplitPath(CONST std::string& Path, std::string& FileName, std::list<std::string>& PathList);

		BOOL InvalidExtention(CONST std::string& Extention);
		BOOL ModelExtention(CONST std::string& Extention);
		BOOL TextureExtention(CONST std::string& Extention);
		BOOL ScriptExtention(CONST std::string& Extention);

		WINDOW_TREEVIEW TreeView;

		FILE_NODE RootNode;
		FILE_NODE* CurrentlySelectedFile;
		FILE_NODE* CurrentlySelectedPopupFile;

		BOOL MpqLoaded;
		std::string MpqFileName;
};


//+-----------------------------------------------------------------------------
//| Global objects
//+-----------------------------------------------------------------------------
extern MPQ_WINDOW MpqWindow;


//+-----------------------------------------------------------------------------
//| End of inclusion guard
//+-----------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?