Window::CheckMutex rename to CheckUnique

This commit is contained in:
Nomango 2018-09-05 17:24:44 +08:00
parent 42ac308278
commit cf3dfc4cf4
2 changed files with 8 additions and 29 deletions

View File

@ -53,38 +53,18 @@ e2d::Window::~Window()
::CoUninitialize();
}
bool e2d::Window::CheckMutex(const String & mutex)
bool e2d::Window::CheckUnique()
{
if (mutex.IsEmpty())
return false;
HANDLE mutex = ::CreateMutex(nullptr, TRUE, LPCWSTR(L"Easy2DApp-" + title_));
HANDLE hMutex = ::CreateMutex(nullptr, TRUE, LPCWSTR(L"Easy2DApp-" + mutex));
if (hMutex == nullptr)
if (mutex == nullptr)
{
WARN("CreateMutex Failed!");
return false;
}
else if (::GetLastError() == ERROR_ALREADY_EXISTS)
{
// 关闭进程互斥体
::CloseHandle(hMutex);
// 打开游戏窗口
if (!this->title_.IsEmpty())
{
// 获取窗口句柄
HWND hProgramWnd = ::FindWindow(REGISTER_CLASS, (LPCTSTR)title_);
if (hProgramWnd)
{
// 获取窗口显示状态
WINDOWPLACEMENT wpm;
::GetWindowPlacement(hProgramWnd, &wpm);
// 将运行的程序窗口还原成正常状态
wpm.showCmd = SW_SHOW;
::SetWindowPlacement(hProgramWnd, &wpm);
::SetWindowPos(hProgramWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
}
}
::CloseHandle(mutex);
return false;
}
return true;

View File

@ -37,11 +37,6 @@ namespace e2d
// 销毁窗体实例
static void DestroyInstance();
// ´´½¨´°Ì廥³âÌå
bool CheckMutex(
const String& mutex = L"" /* ½ø³Ì»¥³âÌåÃû³Æ */
);
// 获取窗体标题
const String& GetTitle() const;
@ -91,6 +86,10 @@ namespace e2d
bool enabled
);
// 检测窗口是否唯一
// 返回值:返回 false 说明游戏已经正在进行,可以防止用户同时打开多个游戏窗口
bool CheckUnique();
// 弹出窗口
// 返回值:当窗口包含取消按钮时,返回值表示用户是否点击确认按钮
bool Popup(