龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

在应用程序启动时显示 Abont 框(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
8.进入 ClassWizard,从下拉组合框中选择应用程序对象 CLd144App。从对象列表中选择对象 CLd144App,从消息列表中选择消息 OnIdle。把下面的代码添加到类 CLd14

  8.进入 ClassWizard,从下拉组合框中选择应用程序对象 CLd144App。从对象列表中选择对象 CLd144App,从消息列表中选择消息 OnIdle。把下面的代码添加到类 CLd144App 的方法 OnIdle 中。

BOOL CLd144App::OnIdle(LONG lCount)
{
    BOOL bResult=CWinApp::OnIdle(lCount);

    if(m_splash.m_hWnd!=NULL)
    {
    if(::GetCurrentTime()-m_dwSplashTime>5000)
    {
        m_splash.DestroyWindow();
        m_pMainWnd->UpdateWindow();
    }
    else
        bResult=TRUE;
    }

    return bResult;
}

  9.进入 ClassWizard,从下拉组合框中选择应用程序对象 CLd144App。从对象列表中选择对象 CLd144App,从消息列表中选择消息 PreTranslateMessage。把下面的代码添加到类 CLd144App 的方法 OnIdle 中。

BOOL CLd144App::PreTranslateMessage(MSG* pMsg)
{
    BOOL bResult=CWinApp::PreTranslateMessage(pMsg);

    if(m_splash.m_hWnd!=NULL&&
    pMsg->message==WM_KEYDOWN//
    pMsg->message==WM_SYSKEYDOWN//
    pMsg->message==WM_LBUTTONDOWN//
    pMsg->message==WM_RBUTTONDOWN//
    pMsg->message==WM_MBUTTONDOWN//
    pMsg->message==WM_NCLBUTTONDOWN//
    pMsg->message==WM_NCRBUTTONDOWN//
    pMsg->message==WM_NCMBUTTONDOWN)
    {
        m_splash.DestroyWindow();
        m_pMainWnd->UpdateWindow();
    }

    return bResult;
}

  10.编译并运行此例子程序。

用法

  当例子程序启动时,在例子程序对象类的方法 InitInstance 中创建无模式对话框(用作 About 框)。一旦此对话框被创建,则在创建主窗口时将被自动置于窗口的前面,接着显示在那里直到用户等待 5s(5x1000ms)或者点击鼠标,或者按下某键后才消失。

  如果用户点击鼠标或按下某键,则调用例子程序对象的方法 PreTranslateMessage,此方法检查 About 框窗口是否存在,如果存在,则撤消此窗口,更新主窗口并使程序继续执行。

  如果用户等待 5s,则调用方法 OnIdle,每当系统有空闲时间来执行例子程序的空闲处理时就调用此方法。在本节的例子程序中,方法 OnIdle 用来检查撤消窗口的时间是否到了,如果到了,则撤消 About 框窗口,而程序继续执行。

精彩图集

赞助商链接