在应用程序启动时显示 Abont 框(3)
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 框窗口,而程序继续执行。
- 上一篇:显示作为窗口或对话框背景的位图
- 下一篇:无模式对话框的创建分析