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

                 在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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值