CCommanBar 的关闭按钮不退出应用程序

Close button of CCommanBar does not exit the application

我正在创建一个智能设备应用程序,它以这种方式创建一个命令栏:

if (!m_wndCommandBar.Create(this) ||
        !m_wndCommandBar.InsertMenuBar(IDR_MAINFRAME) ||
        !m_wndCommandBar.AddAdornments(dwAdornmentFlags))
    {
        TRACE0("CommandBar no se pudo crear\n");
        return -1;      // No se pudo crear
    }

    m_wndCommandBar.SetBarStyle(m_wndCommandBar.GetBarStyle() | CBRS_SIZE_FIXED);

这样,就创建了带有关闭按钮的命令栏。

这是智能设备的SDI应用。

当我按下关闭按钮时,应用程序 window 消失,但应用程序继续 运行。我意识到这一点是因为当我使用 Visual Studio 2008 进行调试时,调试器没有完成。

我能做什么?

Windows Mobile 上的默认按钮和系统控件不会关闭但会隐藏(最小化)window。所以应用程序在后台保持 运行。

您需要添加自定义代码来结束您的应用。例如,您可以使用单独的按钮或菜单项执行此操作,然后执行 PostQuitMessage 或其他代码以结束主进程(在终止任何创建的后台线程之后)。

您还可以修改 Window 样式以包含关闭(确定)按钮。

CommandBar_AddAdornments(hwnCB, 0, 0);

添加标准命令栏控件,通常是关闭 (X) 和帮助选项。您可以为上述调用使用 CMDBAR_OK 标志来添加 Exit/End(确定)按钮。您的消息循环将收到一条以 IDOK 作为消息 ID 的 WM_COMMAND 消息。这可用于通过 PostQuitMessage() 退出应用程序。参见 MSDN

对于您的代码:

 m_wndCommandBar.AddAdornments(dwAdornmentFlags))

可改为:

 m_wndCommandBar.AddAdornments(dwAdornmentFlags || CMDBAR_OK))