欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
让vb自动改变控件的大小 用Winsock实现语音全双工通信使用
未知  在VC++中利用消息制作启动封面
[ 发布日期:21年前 (2004-08-06) ]   [ 来自:Original ] [分类:C\C++相关]
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 中以成功的通过) 

引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/16
复制引用地址https://www.rickw.cn/trackback/16/GBK
[ 分类:C\C++相关  | 查看:685 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5