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

时间:2017-03-16 22:54:47

标签: visual-c++ mfc windows-mobile

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

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应用程序。

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

我该怎么办?

1 个答案:

答案 0 :(得分:0)

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

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

您也可以修改窗口样式以包含关闭(确定)按钮。

CommandBar_AddAdornments(hwnCB, 0, 0);

添加标准命令栏控件,通常是Close(X)和Help选项。您可以使用CMDBAR_OK标志进行上述调用,以添加一个退出/结束(确定)按钮。您的消息循环将获得带有IDOK作为消息ID的WM_COMMAND消息。这可以用于使用PostQuitMessage()退出应用程序。请参阅MSDN

代码:

 m_wndCommandBar.AddAdornments(dwAdornmentFlags))

可以更改为:

 m_wndCommandBar.AddAdornments(dwAdornmentFlags || CMDBAR_OK))