15,979
社区成员
发帖
与我相关
我的任务
分享
class CMyWnd : public CFrameWnd
int CMyWnd::DoModal()
{
if (CWinApp* pApp = AfxGetApp())
pApp->EnableModeless(false);
HWND hWndParent = AfxGetMainWnd()->m_hWnd;
CRect rc(0,0,400,400);
CWnd *pParent = CWnd::FromHandle(hWndParent);
DWORD dwStyle=WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_THICKFRAME | WS_VISIBLE | WS_SYSMENU | WS_CAPTION ;
if(!Create(NULL,L"模态文档 ",dwStyle,rc,pParent,NULL))
return FALSE;
BOOL bEnableParent = FALSE;
m_nModalResult = -1;
m_nFlags |= WF_CONTINUEMODAL;
if (hWndParent != NULL && ::IsWindowEnabled(hWndParent))
{
::EnableWindow(hWndParent,FALSE);
::EnableWindow(m_hWnd,TRUE);
bEnableParent = TRUE;
}
CenterWindow();
TRY
{
// enter modal loop
DWORD dwFlags = MLF_SHOWONIDLE;
if (GetStyle() & DS_NOIDLEMSG) dwFlags |= MLF_NOIDLEMSG;
VERIFY(RunModalLoop(dwFlags) == m_nModalResult);
}
CATCH_ALL(e)
{
DELETE_EXCEPTION(e);
m_nModalResult = -1;
}
END_CATCH_ALL
if (bEnableParent)
::EnableWindow(hWndParent, TRUE);
if (hWndParent != NULL && ::GetActiveWindow() == m_hWnd)
::SetActiveWindow(hWndParent);
// destroy modal window
if (m_hWnd)
{
DestroyWindow();
ASSERT(!m_hWnd);
}
return m_nModalResult;
}
if (m_hWnd)
{
DestroyWindow();
ASSERT(!m_hWnd);
}
int CMyWnd::DoModal()
{
if (CWinApp* pApp = AfxGetApp())
pApp->EnableModeless(false);
HWND hWndParent = AfxGetMainWnd()->m_hWnd;
CRect rc(0,0,400,400);
CWnd *pParent = CWnd::FromHandle(hWndParent);
DWORD dwStyle=WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_THICKFRAME | WS_VISIBLE | WS_SYSMENU | WS_CAPTION ;
if(!Create(NULL,L"模态文档/试图框架 ",dwStyle,rc,pParent,NULL))
return FALSE;
DestroyWindow();
return m_nModalResult;
}