修正代码细节

This commit is contained in:
Nomango 2018-07-25 16:44:22 +08:00
parent 2d4e5ef60a
commit cc300aeb7c
5 changed files with 68 additions and 160 deletions

View File

@ -317,9 +317,9 @@ void e2d::Window::setConsoleEnabled(bool enabled)
hwnd = ::GetConsoleWindow();
// 重定向输入输出
FILE * stdoutStream, * stdinStream, * stderrStream;
freopen_s(&stdoutStream, "conout$", "w+t", stdout);
freopen_s(&stdinStream, "conin$", "r+t", stdin);
freopen_s(&stderrStream, "conout$", "w+t", stderr);
WARN_IF(freopen_s(&stdoutStream, "conout$", "w+t", stdout) != 0, "freopen stdout failed!");
WARN_IF(freopen_s(&stdinStream, "conin$", "r+t", stdin) != 0, "freopen stdin failed!");
WARN_IF(freopen_s(&stderrStream, "conout$", "w+t", stderr) != 0, "freopen stderr failed!");
// 禁用控制台关闭按钮
HMENU hmenu = ::GetSystemMenu(hwnd, FALSE);
::RemoveMenu(hmenu, SC_CLOSE, MF_BYCOMMAND);

View File

@ -79,7 +79,7 @@ e2d::String e2d::String::format(const char * format, ...)
{
std::string tmp;
va_list marker = nullptr;
va_list marker;
va_start(marker, format);
size_t nu_of_chars = _vscprintf(format, marker);
@ -101,7 +101,7 @@ e2d::String e2d::String::format(const wchar_t * format, ...)
{
std::wstring tmp;
va_list marker = nullptr;
va_list marker;
va_start(marker, format);
size_t nu_of_chars = _vscwprintf(format, marker);

View File

@ -1,8 +1,29 @@
#include "..\e2dnode.h"
#define SAFE_SET(pointer, func, ...) if (pointer) { pointer->##func(__VA_ARGS__); }
#define SET_BUTTON_NODE(Old, New) \
if (New != Old) \
{ \
if (Old) this->removeChild(Old); \
if (New) \
{ \
this->addChild(New); \
this->setSize(New->getWidth(), New->getHeight()); \
} \
Old = New; \
_updateState(); \
_updateVisible(); \
} \
e2d::ToggleButton::ToggleButton()
: Button()
, _toggle(true)
, _normalOn(nullptr)
, _mouseoverOn(nullptr)
, _selectedOn(nullptr)
, _disabledOn(nullptr)
, _normalOff(nullptr)
, _mouseoverOff(nullptr)
, _selectedOff(nullptr)
@ -13,6 +34,10 @@ e2d::ToggleButton::ToggleButton()
e2d::ToggleButton::ToggleButton(Node * toggleOnNormal, Node * toggleOffNormal, const Function& func)
: Button()
, _toggle(true)
, _normalOn(nullptr)
, _mouseoverOn(nullptr)
, _selectedOn(nullptr)
, _disabledOn(nullptr)
, _normalOff(nullptr)
, _mouseoverOff(nullptr)
, _selectedOff(nullptr)
@ -26,6 +51,10 @@ e2d::ToggleButton::ToggleButton(Node * toggleOnNormal, Node * toggleOffNormal, c
e2d::ToggleButton::ToggleButton(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnSelected, Node * toggleOffSelected, const Function& func)
: Button()
, _toggle(true)
, _normalOn(nullptr)
, _mouseoverOn(nullptr)
, _selectedOn(nullptr)
, _disabledOn(nullptr)
, _normalOff(nullptr)
, _mouseoverOff(nullptr)
, _selectedOff(nullptr)
@ -41,6 +70,10 @@ e2d::ToggleButton::ToggleButton(Node * toggleOnNormal, Node * toggleOffNormal, N
e2d::ToggleButton::ToggleButton(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnMouseOver, Node * toggleOffMouseOver, Node * toggleOnSelected, Node * toggleOffSelected, const Function& func)
: Button()
, _toggle(true)
, _normalOn(nullptr)
, _mouseoverOn(nullptr)
, _selectedOn(nullptr)
, _disabledOn(nullptr)
, _normalOff(nullptr)
, _mouseoverOff(nullptr)
, _selectedOff(nullptr)
@ -91,186 +124,57 @@ void e2d::ToggleButton::setState(bool bState)
void e2d::ToggleButton::setNormal(Node * normal)
{
if (normal != _normal)
{
// 移除旧的
if (_normal)
{
this->removeChild(_normal);
}
// 添加新的
if (normal)
{
this->addChild(normal);
this->setSize(normal->getWidth(), normal->getHeight());
}
_normal = normal;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_normalOn, normal);
}
void e2d::ToggleButton::setMouseOver(Node * mouseover)
{
if (mouseover != _mouseover)
{
// 移除旧的
if (_mouseover)
{
this->removeChild(_mouseover);
}
// 添加新的
if (mouseover)
{
this->addChild(mouseover);
}
_mouseover = mouseover;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_mouseoverOn, mouseover);
}
void e2d::ToggleButton::setSelected(Node * selected)
{
if (selected != _selected)
{
// 移除旧的
if (_selected)
{
this->removeChild(_selected);
}
// 添加新的
if (selected)
{
this->addChild(selected);
}
_selected = selected;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_selectedOn, selected);
}
void e2d::ToggleButton::setDisabled(Node * disabled)
{
if (disabled != _disabled)
{
// 移除旧的
if (_disabled)
{
this->removeChild(_disabled);
}
// 添加新的
if (disabled)
{
this->addChild(disabled);
}
_disabled = disabled;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_disabledOn, disabled);
}
void e2d::ToggleButton::setNormalOff(Node * normal)
{
if (normal != _normalOff)
{
// 移除旧的
if (_normalOff)
{
this->removeChild(_normalOff);
}
// 添加新的
if (normal)
{
this->addChild(normal);
}
_normalOff = normal;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_normalOff, normal);
}
void e2d::ToggleButton::setMouseOverOff(Node * mouseover)
{
if (mouseover != _mouseoverOff)
{
// 移除旧的
if (_mouseoverOff)
{
this->removeChild(_mouseoverOff);
}
// 添加新的
if (mouseover)
{
this->addChild(mouseover);
}
_mouseoverOff = mouseover;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_mouseoverOff, mouseover);
}
void e2d::ToggleButton::setSelectedOff(Node * selected)
{
if (selected != _selectedOff)
{
// 移除旧的
if (_selectedOff)
{
this->removeChild(_selectedOff);
}
// 添加新的
if (selected)
{
this->addChild(selected);
}
_selectedOff = selected;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_selectedOff, selected);
}
void e2d::ToggleButton::setDisabledOff(Node * disabled)
{
if (disabled != _disabledOff)
{
// 移除旧的
if (_disabledOff)
{
this->removeChild(_disabledOff);
}
// 添加新的
if (disabled)
{
this->addChild(disabled);
}
_disabledOff = disabled;
_updateState();
_updateVisible();
}
SET_BUTTON_NODE(_disabledOff, disabled);
}
void e2d::ToggleButton::_updateState()
{
if (_toggle)
{
_normal = _normal;
_mouseover = _mouseover;
_selected = _selected;
_disabled = _disabled;
_normal = _normalOn;
_mouseover = _mouseoverOn;
_selected = _selectedOn;
_disabled = _disabledOn;
if (_normalOff) _normalOff->setVisible(false);
if (_mouseoverOff) _mouseoverOff->setVisible(false);
if (_selectedOff) _selectedOff->setVisible(false);
if (_disabledOff) _disabledOff->setVisible(false);
SAFE_SET(_normalOff, setVisible, false);
SAFE_SET(_mouseoverOff, setVisible, false);
SAFE_SET(_selectedOff, setVisible, false);
SAFE_SET(_disabledOff, setVisible, false);
}
else
{
@ -279,10 +183,10 @@ void e2d::ToggleButton::_updateState()
_selected = _selectedOff;
_disabled = _disabledOff;
if (_normal) _normal->setVisible(false);
if (_mouseover) _mouseover->setVisible(false);
if (_selected) _selected->setVisible(false);
if (_disabled) _disabled->setVisible(false);
SAFE_SET(_normalOn, setVisible, false);
SAFE_SET(_mouseoverOn, setVisible, false);
SAFE_SET(_selectedOn, setVisible, false);
SAFE_SET(_disabledOn, setVisible, false);
}
}

View File

@ -461,10 +461,10 @@ bool e2d::Music::_findMediaFileCch(wchar_t* strDestPath, int cchDest, const wcha
// Get the exe _name, and exe path
wchar_t strExePath[MAX_PATH] = { 0 };
wchar_t strExeName[MAX_PATH] = { 0 };
wchar_t* strLastSlash = nullptr;
GetModuleFileName(HINST_THISCOMPONENT, strExePath, MAX_PATH);
strExePath[MAX_PATH - 1] = 0;
strLastSlash = wcsrchr(strExePath, TEXT('\\'));
wchar_t* strLastSlash = wcsrchr(strExePath, TEXT('\\'));
if (strLastSlash)
{
wcscpy_s(strExeName, MAX_PATH, &strLastSlash[1]);

View File

@ -945,10 +945,14 @@ protected:
virtual void _runCallback() override;
protected:
Node * _normalOff;
Node * _mouseoverOff;
Node * _selectedOff;
Node * _disabledOff;
Node* _normalOn;
Node* _mouseoverOn;
Node* _selectedOn;
Node* _disabledOn;
Node* _normalOff;
Node* _mouseoverOff;
Node* _selectedOff;
Node* _disabledOff;
bool _toggle;
};