在windows移动平台隐藏基于对话框的应用程序后,用户无法再激活它

After hiding dialog based app on windows mobile platform, user cannot activate it anymore

本文关键字:用户 激活 应用程序 平台 移动 windows 隐藏 对话框      更新时间:2023-10-16

我正在努力解决Windows Mobile编程(基于对话框的应用程序)的一个问题。

我有基于对话框的MFC应用程序。App是这样创建的:
BOOL MyApp::InitInstance()
{
    MainDlg dlg;
    dlg.DoModal();
    m_pMainWnd = &dlg;
    return FALSE;
}

这很好。但它有一个大问题。如果用户最小化应用程序(例如通过点击"home键"),他无法再次检索应用程序窗口,这是不可想象的(因为应用程序与外部设备有一些连接,如果发生这种情况,手机和设备必须重置)。

我有一个解决方案,但不能实现它:创建CFrameWnd,这将是主窗口,这个窗口将"加载"对话框。这意味着,应用程序将有窗口,用户将能够使用任务管理器并将其置于顶部(这是不可能的,因为基于对话框的应用程序不在任务管理器的应用程序中列出)。

我真的很感激有经验的开发人员的帮助,他们比我有更好的MFC技能。

有关更多信息:我正在使用evc++ 4.0与SP 3

只是一个猜测:对话框的重新激活在某种程度上取决于m_pMainWnd成员,直到 DoModal返回后,才被设置。,当对话框关闭时。当隐藏时,它不会被关闭,因此m_pMainWnd未初始化。

尝试在调用DoModal之前设置

好吧,我终于想通了。我已经关闭了Title bar,因此任务管理器没有显示我的应用程序,因为它没有任何窗口。

但是在启动应用程序后,它在任务栏和标题栏有标题。删除标题栏&边界,我留下了这些选项:

  • [OK]标题栏
  • Border - thin

在代码中我这样做了:

BOOL MyDlg::OnInitDialog()
{
     ...
     ModifyStyle(WS_BORDER, 0, SWP_FRAMECHANGED);
     MoveWindow(...);
}

现在我的应用程序有窗口-它在任务管理器中可见,而且我也使用了尽可能多的空间