当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>Visual C++教程

在VC++中利用消息制作启动封面

    1.用Appwizard创建一个空的SDI工程Splash;

    2.导入用作启动封面的图片;

    (1)在创建的新工程Splash中,选择ResourceView面板打开资源编辑器。右击"Splash resources",在打开的快捷菜单中选择“Insert”命令,选择其中的“Bitmap”选项,然后单击“Import”按钮,准备导入用做启动封面的BMP图形文件。

    (2)在ResourceView面板中,右击刚导入的“IDB_MITMAP1”位图资源,在打开的快捷菜单中选择“properties”命令,将ID值改为便于理解与记忆的“ID_SPLASH”。

    3.新建一个对话框资源,在其中添加导入的位图;

    (1)在ResourceView面板中,右击“Dialog”资源。在打开的快捷菜单中选择“Insert Dialog”命令,新建一个对话框资源。删除对话框中的“OK”“Cancel”按钮,选择自己喜欢的对话框风格.

    (2)在对话框资源中添加一个Picture控件,打开其"Picture properties"属性对话框.选择"General"标签,在"Tpye"下拉框中选择"Bitmap"选项,在"Image"下拉框中选择前面导入的位图资源的ID值"IDB_SPLASH".将对话框的资源的大小调整为和Picture控件大小相同.

    (3)右击资源编辑器,在打开的快捷菜单中选择"ClassWizard"命令,弹出"Adding a class"对话框,为新建的对话框资源添加一个新类.在"New Class"对话框的"Name"文本框中输入对话框类名"CsplashDlg",然后顺序单击"OK"按钮关闭"New Class"和"ClassWizard"对话框.

    4.编写代码,实现启动封面的功能;

    (1)添加一个指针成员变量"*splash".在工程工作区选择"ClassView"面板,展开类树,右击"CMainFrame"类,在弹出的快捷菜单中选择"Add Member Variable..." 命令,打开"Add Member Variable"对话框,然"Variable Type"文本框中输入"CsplashDlg",在"Variable Name"文本框中输入"splash".单击"OK"按钮关闭"Add Member Variable"对话框,在Splash.cpp文件中添加如下包含语句:#include "SplashDlg.h"

    (2) 选择"View"下拉菜单中的"ClassWizard"命令,打开"ClassWizard"对话框.选择"Message Maps"标签,在"Class name"下拉框中选择"CMainFrame"类,然后在"Messages:"列表框中选择消息"WM_TIMER".单击"Add Function"按钮添加"OnTimer"函数.

    (3)双击"Member Function"列表框中的"OnTimer"函数,编辑该函数.函数清单如下:

    void CMainFrame::OnTimer(UINT nIDEvent)
    {
    if (nIDEvent == 1)
    {if (splash->IsWindowVisible())
    {//启动封面设置为当前活动窗口;
    splash->SetActiveWindow();
    splash->UpdateWindow();
    //启动封面停留时间;
    Sleep(2000);
    splash->SendMessage(WM_CLOSE);
    }
    else
    {//应用程序窗口设置为当前活动窗口;
    SetActiveWindow();
    //清除WM_TIMER事件;
    KillTimer(1);
    }
    }
    //CFrameWnd::OnTimer(nIDEvent);
    }

    (4)在CMainFrame类的OnCreate函数中添加SetTimer函数,并添加显示启动封面的程序代码.修改后的OnCreate函数清单如下:

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    //开始显示启动封面;
    SetTimer(1,5,NULL);//添加ID号为1 的WM_TIMER事件,响应频率不宜过大;
    splash = new CSplashDlg();
    //可以添加播放WAV声音的代码;
    //sndPlaySound("welcome.wav",SND_ASYNC);
    //PlaySound("welcome.wav",NULL,SND_ASYNC);

    splash->Create(IDD_DIALOG1);
    splash->ShowWindow(SW_SHOW);
    splash->UpdateWindow();

    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    return -1;

    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
    TRACE0("Failed to create toolbar\n");
    return -1; // fail to create
    }

    if (!m_wndStatusBar.Create(this) ||
    !m_wndStatusBar.SetIndicators(indicators,
    sizeof(indicators)/sizeof(UINT)))
    {
    TRACE0("Failed to create status bar\n");
    return -1; // fail to create
    }

    // TODO: Delete these three lines if you don't want the toolbar to
    // be dockable
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);

    //应用程序窗口居中显示;
    CenterWindow();

    return 0;
    }

    编译,链接后运行应用程序,显示添加的启动封面.(该程序在VC++ 6.0 中以成功的通过)

相关内容
赞助商链接