添加EMenu菜单类;修复了EFileUtils中参数与EString不兼容的问题。

This commit is contained in:
Nomango 2017-11-07 23:32:44 +08:00
parent 339a0724fb
commit f82bccb73d
6 changed files with 139 additions and 25 deletions

View File

@ -236,6 +236,7 @@
<ClCompile Include="Manager\ETimerManager.cpp" />
<ClCompile Include="Node\EButton.cpp" />
<ClCompile Include="Node\EButtonToggle.cpp" />
<ClCompile Include="Node\EMenu.cpp" />
<ClCompile Include="Node\ENode.cpp" />
<ClCompile Include="Node\ESprite.cpp" />
<ClCompile Include="Node\EText.cpp" />

View File

@ -210,6 +210,9 @@
<ClCompile Include="Node\EButtonToggle.cpp">
<Filter>Node</Filter>
</ClCompile>
<ClCompile Include="Node\EMenu.cpp">
<Filter>Node</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Win\winbase.h">

69
Easy2D/Node/EMenu.cpp Normal file
View File

@ -0,0 +1,69 @@
#include "..\enodes.h"
e2d::EMenu::EMenu()
: m_bEnable(true)
{
}
e2d::EMenu::EMenu(int number, EButton * button1, ...)
: EMenu()
{
EButton ** ppButton = &button1;
while (number > 0)
{
this->addButton(*ppButton);
ppButton++;
number--;
}
}
bool e2d::EMenu::isEnable() const
{
return m_bEnable;
}
size_t e2d::EMenu::getButtonCount() const
{
return m_vButtons.size();
}
void e2d::EMenu::setEnable(bool enable)
{
m_bEnable = enable;
for (auto &buttons : m_vButtons)
{
buttons->setEnable(enable);
}
}
void e2d::EMenu::addButton(EButton * button)
{
this->addChild(button);
m_vButtons.push_back(button);
}
bool e2d::EMenu::removeButton(EButton * button)
{
if (m_vButtons.empty())
{
return false;
}
this->removeChild(button);
if (button)
{
size_t size = m_vButtons.size();
for (size_t i = 0; i < size; i++)
{
if (m_vButtons[i] == button)
{
m_vButtons.erase(m_vButtons.begin() + i);
return true;
}
}
}
return false;
}

View File

@ -66,37 +66,37 @@ e2d::EString e2d::EFileUtils::getDefaultSavePath()
return path;
}
void e2d::EFileUtils::saveInt(LPCTSTR key, int value)
void e2d::EFileUtils::saveInt(const EString & key, int value)
{
::WritePrivateProfileString(L"Default", key, std::to_wstring(value).c_str(), getDefaultSavePath().c_str());
::WritePrivateProfileString(L"Default", key.c_str(), std::to_wstring(value).c_str(), getDefaultSavePath().c_str());
}
void e2d::EFileUtils::saveFloat(LPCTSTR key, float value)
void e2d::EFileUtils::saveFloat(const EString & key, float value)
{
::WritePrivateProfileString(L"Default", key, std::to_wstring(value).c_str(), getDefaultSavePath().c_str());
::WritePrivateProfileString(L"Default", key.c_str(), std::to_wstring(value).c_str(), getDefaultSavePath().c_str());
}
void e2d::EFileUtils::saveString(LPCTSTR key, LPCTSTR value)
void e2d::EFileUtils::saveString(const EString & key, const EString & value)
{
::WritePrivateProfileString(L"Default", key, value, getDefaultSavePath().c_str());
::WritePrivateProfileString(L"Default", key.c_str(), value.c_str(), getDefaultSavePath().c_str());
}
int e2d::EFileUtils::getInt(LPCTSTR key, int default)
int e2d::EFileUtils::getInt(const EString & key, int default)
{
return ::GetPrivateProfileInt(L"Default", key, default, getDefaultSavePath().c_str());
return ::GetPrivateProfileInt(L"Default", key.c_str(), default, getDefaultSavePath().c_str());
}
float e2d::EFileUtils::getFloat(LPCTSTR key, float default)
float e2d::EFileUtils::getFloat(const EString & key, float default)
{
TCHAR temp[32] = { 0 };
::GetPrivateProfileString(L"Default", key, std::to_wstring(default).c_str(), temp, 31, getDefaultSavePath().c_str());
::GetPrivateProfileString(L"Default", key.c_str(), std::to_wstring(default).c_str(), temp, 31, getDefaultSavePath().c_str());
return std::stof(temp);
}
e2d::EString e2d::EFileUtils::geTString(LPCTSTR key, LPCTSTR default)
e2d::EString e2d::EFileUtils::geTString(const EString & key, const EString & default)
{
TCHAR temp[256] = { 0 };
::GetPrivateProfileString(L"Default", key, default, temp, 255, getDefaultSavePath().c_str());
::GetPrivateProfileString(L"Default", key.c_str(), default.c_str(), temp, 255, getDefaultSavePath().c_str());
return EString(temp);
}
@ -117,7 +117,7 @@ e2d::EString e2d::EFileUtils::getFileExtension(const EString & filePath)
return fileExtension;
}
e2d::EString e2d::EFileUtils::getSaveFilePath(LPCTSTR title, LPCTSTR defExt)
e2d::EString e2d::EFileUtils::getSaveFilePath(const EString & title, const EString & defExt)
{
// 弹出保存对话框
OPENFILENAME ofn = { 0 };
@ -130,8 +130,8 @@ e2d::EString e2d::EFileUtils::getSaveFilePath(LPCTSTR title, LPCTSTR defExt)
ofn.nMaxFile = sizeof(strFilename); // 缓冲区长度
ofn.lpstrInitialDir = NULL; // 初始目录为默认
ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;// 目录必须存在,覆盖文件前发出警告
ofn.lpstrTitle = title; // 使用系统默认标题留空即可
ofn.lpstrDefExt = defExt; // 默认追加的扩展名
ofn.lpstrTitle = title.c_str(); // 使用系统默认标题留空即可
ofn.lpstrDefExt = defExt.c_str(); // 默认追加的扩展名
if (GetSaveFileName(&ofn))
{

View File

@ -782,4 +782,45 @@ protected:
bool m_bToggle;
};
class EMenu :
public ENode
{
public:
// 创建空菜单
EMenu();
// 创建菜单
EMenu(
int number, /* 菜单中按钮的数量 */
EButton * button1, /* 第一个按钮 */
...
);
// 获取菜单是否禁用
bool isEnable() const;
// 获取菜单中的按钮数量
size_t getButtonCount() const;
// 设置菜单启用或禁用
void setEnable(
bool enable
);
// 添加按钮
void addButton(
EButton * button
);
// 移除按钮
bool removeButton(
EButton * button
);
protected:
bool m_bEnable;
EVector<EButton*> m_vButtons;
};
}

View File

@ -113,38 +113,38 @@ public:
// 保存 int 型的值
static void saveInt(
LPCTSTR key,
const EString & key,
int value
);
// 保存 float 型的值
static void saveFloat(
LPCTSTR key,
const EString & key,
float value
);
// 保存 字符串 型的值(不要在 Unicode 字符集下保存中文字符)
static void saveString(
LPCTSTR key,
LPCTSTR value
const EString & key,
const EString & value
);
// 获取 int 型的值(若不存在则返回 default 参数的值)
static int getInt(
LPCTSTR key,
const EString & key,
int default
);
// 获取 float 型的值(若不存在则返回 default 参数的值)
static float getFloat(
LPCTSTR key,
const EString & key,
float default
);
// 获取 字符串 型的值(若不存在则返回 default 参数的值)
static EString geTString(
LPCTSTR key,
LPCTSTR default
const EString & key,
const EString & default
);
// 得到文件扩展名(小写)
@ -157,8 +157,8 @@ public:
*
*/
static EString getSaveFilePath(
LPCTSTR title = L"保存到",
LPCTSTR defExt = NULL
const EString & title = L"±£´æµ½",
const EString & defExt = NULL
);
};