void GameWidget::onGameWin(bool newRecord, int time) { auto_ptr<Dialog> dialog(new Dialog(winMessage(newRecord, time), "cool")); connect(dialog.get(), SIGNAL(accepted()), SIGNAL(closed())); connect(dialog.get(), SIGNAL(rejected()), SIGNAL(closed())); m_dialogManager.showDialog(dialog); }
bool kvi_sendIpcMessage(const char * message) { #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) HWND hSentinel = ::FindWindow(TEXT("Qt5QWindowIcon"), TEXT("kvirc4_ipc_sentinel")); if(hSentinel != nullptr) { COPYDATASTRUCT cpd; cpd.cbData = strlen(message) + 1; cpd.dwData = KVI_WINDOWS_IPC_MESSAGE; cpd.lpData = (void *)message; DWORD_PTR dwResult; if(!::SendMessageTimeout(hSentinel, WM_COPYDATA, (WPARAM)nullptr, (LPARAM)&cpd, SMTO_BLOCK, 1000, &dwResult)) { DWORD errorMessageID = ::GetLastError(); if (errorMessageID) { LPSTR messageBuffer = nullptr; size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, nullptr); std::string winMessage(messageBuffer, size); //Free the buffer. LocalFree(messageBuffer); qDebug("Failed to send IPC message: %s", winMessage.c_str()); } else { qDebug("Failed to send IPC message."); } } return true; } #elif defined(COMPILE_X11_SUPPORT) && defined(COMPILE_QX11INFO_SUPPORT) kvi_ipcLoadAtoms(); Window sentinel = kvi_x11_findIpcSentinel(kvi_ipc_get_xrootwin()); if(sentinel != 0) { kvi_ipcSetRemoteCommand(sentinel, message); return true; } #endif //!COMPILE_NO_X && COMPILE_ON_WINDOWS return false; }