主界面在程序运行时隐藏 DoModal的二三事
来源:互联网 发布:js checked=1 编辑:程序博客网 时间:2024/05/17 01:04
隐藏界面比较好的方案是重写DoModal
VS2008版
重写:
INT_PTR CIGoClientDlg::DoModal(){ // can be constructed with a resource template or InitModalIndirect ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL || m_lpDialogTemplate != NULL); // load resource as necessary LPCDLGTEMPLATE lpDialogTemplate = m_lpDialogTemplate; HGLOBAL hDialogTemplate = m_hDialogTemplate; HINSTANCE hInst = AfxGetResourceHandle(); if (m_lpszTemplateName != NULL) { hInst = AfxFindResourceHandle(m_lpszTemplateName, RT_DIALOG); HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG); hDialogTemplate = LoadResource(hInst, hResource); } if (hDialogTemplate != NULL) lpDialogTemplate = (LPCDLGTEMPLATE)LockResource(hDialogTemplate); // return -1 in case of failure to load the dialog template resource if (lpDialogTemplate == NULL) return -1; // disable parent (before creating dialog) HWND hWndParent = PreModal(); AfxUnhookWindowCreate(); BOOL bEnableParent = FALSE;#ifndef _AFX_NO_OLE_SUPPORT CWnd* pMainWnd = NULL; BOOL bEnableMainWnd = FALSE;#endif if (hWndParent && hWndParent != ::GetDesktopWindow() && ::IsWindowEnabled(hWndParent)) { ::EnableWindow(hWndParent, FALSE); bEnableParent = TRUE;#ifndef _AFX_NO_OLE_SUPPORT pMainWnd = AfxGetMainWnd(); if (pMainWnd && pMainWnd->IsFrameWnd() && pMainWnd->IsWindowEnabled()) { // // We are hosted by non-MFC container // pMainWnd->EnableWindow(FALSE); bEnableMainWnd = TRUE; }#endif } TRY { // create modeless dialog AfxHookWindowCreate(this); if (CreateDlgIndirect(lpDialogTemplate, CWnd::FromHandle(hWndParent), hInst)) { if (m_nFlags & WF_CONTINUEMODAL) { // enter modal loop ***DWORD dwFlags = 0; //MLF_SHOWONIDLE;*** if (GetStyle() & DS_NOIDLEMSG) dwFlags |= MLF_NOIDLEMSG; VERIFY(RunModalLoop(dwFlags) == m_nModalResult); } // hide the window before enabling the parent, etc. if (m_hWnd != NULL) SetWindowPos(NULL, 0, 0, 0, 0, SWP_HIDEWINDOW| SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER); } } CATCH_ALL(e) { ***{ e->Delete(); } // DELETE_EXCEPTION(e);*** m_nModalResult = -1; } END_CATCH_ALL#ifndef _AFX_NO_OLE_SUPPORT if (bEnableMainWnd) pMainWnd->EnableWindow(TRUE);#endif if (bEnableParent) ::EnableWindow(hWndParent, TRUE); if (hWndParent != NULL && ::GetActiveWindow() == m_hWnd) ::SetActiveWindow(hWndParent); // destroy modal window DestroyWindow(); PostModal(); // unlock/free resources as necessary if (m_lpszTemplateName != NULL || m_hDialogTemplate != NULL) UnlockResource(hDialogTemplate); if (m_lpszTemplateName != NULL) FreeResource(hDialogTemplate); return m_nModalResult;}
VS2013版
CigoAssistantDlg dlg;m_pMainWnd = &dlg;//INT_PTR nResponse = dlg.DoModal();dlg.Create(IDD_IGOASSISTANT_DIALOG);dlg.ShowWindow(SW_HIDE);INT_PTR nResponse = dlg.RunModalLoop();
0 0
- 主界面在程序运行时隐藏 DoModal的二三事
- 隐藏运行程序界面
- 如何让基于对话框的程序运行时隐藏界面
- 如何让基于对话框的程序运行时隐藏界面
- 在运行MFC程序的Release版本时,断点断在"INT_PTR nResponse = dlg.DoModal();"这句话上的处理
- 在运行时切换 WinForm 程序的界面语言
- 在运行时切换 WinForm 程序的界面语言
- 让MFC程序隐藏运行界面
- 让MFC程序隐藏运行界面
- 让MFC程序隐藏运行界面
- 让MFC程序隐藏运行界面
- 让MFC程序隐藏运行界面
- 隐藏MFC对话框DoModal出来的窗口
- 线程里弹DoModal框置顶以及禁止在处理DoModal框时MFC主界面最小化及对主界面进行操作 .
- iOS 【UIKit-在程序运行时隐藏状态栏】
- 隐藏MFC 运行界面的绝佳方案
- 【C++学习笔记】C++控制台程序隐藏界面运行的方法
- 如何“隐藏”运行程序的“命令提示符”界面(C代码)
- Android组件之TextView
- WebSphere Message Broker 安装配置
- Java annotation中Taget使用多个类型
- 黑马程序员-81-自定义BufferedReader类
- Clojure入门指南(Getting Started)
- 主界面在程序运行时隐藏 DoModal的二三事
- 第二章 元信息标记<meta>
- C#热图生成(一)——with .NET 2.0
- shell编程学习记录
- MFC文档视图(二):标准消息
- PHP CURL curl_setopt 参数
- OFBIZ 分页代码
- UVM平台搭建
- 获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)