読者です 読者をやめる 読者になる 読者になる

cocos2d-x Win32 [修正]アプリの二重起動をさせないようにする

Classes\AppDelegate.cpp

glview = GLViewImpl::createの第1引数で使われているアプリ名をまず調べます。

glview = GLViewImpl::create("アプリ名");

 

proj.win32\main.cpp

_tWinMainの最初にチェック処理を追加する

クラス名がGLFWから始まり、タイトルがゲーム名の物があるかチェック

BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam)
{
    wchar_t buff[256] = L"";
    GetClassName(hWnd, buff, sizeof(buff));
    if (wcsstr(buff, L"GLFW") != NULL) {
        GetWindowText(hWnd, buff, sizeof(buff));
        if (wcsstr(buff, (wchar_t*)lParam) != NULL) {
            return false;
        }
    }
    return true;
}

int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    if (!EnumWindows(EnumWndProc, (LPARAM)L"アプリ名")) {
        return FALSE;
    }
    // create the application instance
    AppDelegate app;
    return Application::getInstance()->run();
}