问题
有的程序员希望能够在应用程序装入前以及显示主窗口后的几秒钟内显示 About 框。这样的实现在专业 Windows 应用程序中比比皆是。但在—般的应用程序中也需要实现此功能,而且还需要 About 框在显示一定时间后自动消失。或者在用户点击应用程序的主窗口后消失。
那么,如何利用 Windows API 函数来创建满足这些要求的 About 框呢?
方法
在程序开始前的几秒钟里显示 About 框的思想并非是新想法,此思想同样用于显示扉屏,即在程序装入时显示彩色图画给用户观看。但在本节中,只关心如何显示文本信息,如版本信息或所有权信息。
要创建自动消失的 About 框,实际上需要创建无模式对话框。所谓无模式对话框就是没有属主和非“ 模式”的对话框,即在对话框显示的同时其他应用程序照常可以运行。
步骤
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)按照下列步骤实现一个例子程序。运行此例子程序,将显示出一个 About 框。在主窗口出现时点击主窗口用户区中的任何地方,对话框将消失,如果用户等待 5s,对话框也会消失的。
实现例子程序的具体步骤如下:
1.在 Visual C++ 中,利用 AppWizard 创建新的项目文件,并命名新的项目文件为 Ld144。
2.进入 ClassWizard,点击按钮 Add Class。新类命名为 CSplash,并选择类 CDialog 作为此类的基类,忽略关于没有为此类定义对话框模板标识符的警告信息,生成新类。
3.在 ClassWizard 中,从下拉列表中选择类 CSplash,从对象列表中选择对象 CSplash,从消息列表中选择消息 WM_INITDIALOG,点击按钮 Add Function,在 CSplash 的方法 OnInitDialog 中添加下列代码:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
BOOL CSplash::OnInitDialog()
{
CDialog::OnInitDialog();
CenterWindow();
return TRUE; // return TRUE unless you set the focus to a control
}
4.在文件 Splash.cpp 中添加下列代码:
BOOL CSplash::Create(CWnd* pParentWnd)
{
if(!CDialog::Create(CSplash::IDD, pParentWnd))
{
TRACE0("Warning:creation of CSplashWnd Dialog failed!");
return FALSE;
}
return TRUE;
}
5.在类 CSplash 的头文件中做下列改动,改动的代码用暗红色字体表示:
class CSplash : public CDialog
{
// Construction
public:
CSplash(CWnd* pParent = NULL); // standard constructor
BOOL Create(CWnd* pParentWnd);
// Dialog Data
//{{AFX_DATA(CSplash)
enum { IDD = IDD_ABOUTBOX };
// NOTE: the ClassWizard will add data members here
/