Create wxWindow in heap rather than stack
Center DX9 window Bring Wiimote reconnect confirm dialog to topmost, now only works with OpenGL. (It seems DX9 in full screen doesn't like other windows overlapped upon it.) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4895 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
05b1bfd733
commit
1c09cba69a
|
@ -166,11 +166,20 @@ CPanel::CPanel(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// The Wiimote has been disconnect, we offer reconnect here
|
// The Wiimote has been disconnect, we offer reconnect here
|
||||||
if(AskYesNo("Wiimote %i has been disconnected by system.\n"
|
wxMessageDialog *dlg = new wxMessageDialog(
|
||||||
"Maybe this game doesn't support multi-wiimote,\n"
|
this,
|
||||||
"or maybe it is due to idle time out or other reason.\n\n"
|
wxString::Format(wxT("Wiimote %i has been disconnected by system.\n")
|
||||||
"Do you want to reconnect immediately?", lParam + 1, "Confirm", wxYES_NO))
|
wxT("Maybe this game doesn't support multi-wiimote,\n")
|
||||||
|
wxT("or maybe it is due to idle time out or other reason.\n\n")
|
||||||
|
wxT("Do you want to reconnect immediately?"), lParam + 1),
|
||||||
|
wxT("Reconnect Wiimote Confirm"),
|
||||||
|
wxYES_NO | wxSTAY_ON_TOP | wxICON_INFORMATION, //wxICON_QUESTION,
|
||||||
|
wxDefaultPosition);
|
||||||
|
|
||||||
|
if (dlg->ShowModal() == wxID_YES)
|
||||||
GetUsbPointer()->AccessWiiMote(lParam | 0x100)->Activate(true);
|
GetUsbPointer()->AccessWiiMote(lParam | 0x100)->Activate(true);
|
||||||
|
|
||||||
|
delete dlg;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -698,14 +698,16 @@ void CFrame::DoStop()
|
||||||
// Ask for confirmation in case the user accidentally clicked Stop / Escape
|
// Ask for confirmation in case the user accidentally clicked Stop / Escape
|
||||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop)
|
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop)
|
||||||
{
|
{
|
||||||
wxMessageDialog dlg(
|
wxMessageDialog *dlg = new wxMessageDialog(
|
||||||
this,
|
this,
|
||||||
wxString::FromAscii("Do want to stop the current emulation?"),
|
wxT("Do you want to stop the current emulation?"),
|
||||||
wxString::FromAscii("Please confirm..."),
|
wxT("Please confirm..."),
|
||||||
wxYES_NO | wxSTAY_ON_TOP | wxCENTRE,
|
wxYES_NO | wxSTAY_ON_TOP | wxICON_EXCLAMATION,
|
||||||
wxDefaultPosition);
|
wxDefaultPosition);
|
||||||
|
|
||||||
if (dlg.ShowModal() == wxID_NO)
|
int Ret = dlg->ShowModal();
|
||||||
|
delete dlg;
|
||||||
|
if (Ret == wxID_NO)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -234,9 +234,45 @@ void Show()
|
||||||
|
|
||||||
HWND Create(HWND hParent, HINSTANCE hInstance, const TCHAR *title)
|
HWND Create(HWND hParent, HINSTANCE hInstance, const TCHAR *title)
|
||||||
{
|
{
|
||||||
|
// TODO:
|
||||||
|
// 1. Remove redundant window manipulation,
|
||||||
|
// 2. Make DX9 in fullscreen can be overlapped by other dialogs
|
||||||
|
HWND Ret;
|
||||||
int width=640, height=480;
|
int width=640, height=480;
|
||||||
sscanf( g_Config.bFullscreen ? g_Config.cFSResolution : g_Config.cInternalRes, "%dx%d", &width, &height );
|
sscanf( g_Config.bFullscreen ? g_Config.cFSResolution : g_Config.cInternalRes, "%dx%d", &width, &height );
|
||||||
return OpenWindow(hParent, hInstance, width, height, title);
|
// SetSize(width, height);
|
||||||
|
Ret = OpenWindow(hParent, hInstance, width, height, title);
|
||||||
|
|
||||||
|
if (Ret)
|
||||||
|
{
|
||||||
|
DWORD dwStyle = 0; // Window Style
|
||||||
|
DWORD dwExStyle = 0; // Window Extended Style
|
||||||
|
RECT rc = {0, 0, width, height};
|
||||||
|
RECT rcdesktop;
|
||||||
|
GetWindowRect(GetDesktopWindow(), &rcdesktop);
|
||||||
|
int X = (rcdesktop.right-rcdesktop.left)/2 - (rc.right-rc.left)/2;
|
||||||
|
int Y = (rcdesktop.bottom-rcdesktop.top)/2 - (rc.bottom-rc.top)/2;
|
||||||
|
|
||||||
|
if (g_Config.bFullscreen && !g_Config.RenderToMainframe)
|
||||||
|
{
|
||||||
|
// Hide the cursor
|
||||||
|
ShowCursor(FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
|
||||||
|
dwStyle = WS_OVERLAPPEDWINDOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AdjustWindowRectEx(&rc, dwStyle, FALSE, dwExStyle);
|
||||||
|
|
||||||
|
if (g_Config.bFullscreen)
|
||||||
|
// We put the window at the upper left corner of the screen, so x = y = 0
|
||||||
|
SetWindowPos(EmuWindow::GetWnd(), NULL, 0, 0, rc.right-rc.left, rc.bottom-rc.top, SWP_NOREPOSITION | SWP_NOZORDER);
|
||||||
|
else if (!g_Config.RenderToMainframe)
|
||||||
|
SetWindowPos(EmuWindow::GetWnd(), NULL, X, Y, rc.right-rc.left, rc.bottom-rc.top, SWP_NOREPOSITION | SWP_NOZORDER);
|
||||||
|
}
|
||||||
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Close()
|
void Close()
|
||||||
|
@ -261,7 +297,7 @@ void SetSize(int width, int height)
|
||||||
rc.right = rc.left + w;
|
rc.right = rc.left + w;
|
||||||
rc.top = (1024 - h)/2;
|
rc.top = (1024 - h)/2;
|
||||||
rc.bottom = rc.top + h;
|
rc.bottom = rc.top + h;
|
||||||
::MoveWindow(m_hWnd, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
|
MoveWindow(m_hWnd, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToggleFullscreen(HWND hParent)
|
void ToggleFullscreen(HWND hParent)
|
||||||
|
|
Loading…
Reference in New Issue