闪屏,我们自己动手做,相当简单
来源:互联网 发布:淘宝 在异地 被起诉 编辑:程序博客网 时间:2024/05/01 04:43
闪屏,就是在主对话框弹出之前先在屏幕上显示一张图片,或一小段动画以介绍产品的信息等。
初一看,在屏幕上显示一张图片或动画是不太容易的事情,但我们仔细一想便会发现,其实是挺简单的。
我们应该这样来考虑,在屏幕上显示一个对话框估计只要学过MFC的人都会做,我们可以将对话框的边框和按钮都去掉,只剩下一个面板,而且这个面板上只有一张图片,这个也不算太难(别忘了设置对话框的visible属性)。然后再用classWizzard为这个对话框新建一个类,比如叫CMySplash吧。好,至此准备工作已经做完。下面我们就将这个伪图片做成闪屏。
1.要想让这张图片在主对话框出现之前出现,首先我们得知道主对话框是在哪里弹出的。
观察BOOL CMyClassApp::InitInstance()中的代码,我们不难发现有这样一段:
CMyClassDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
很明显,这段代码的意思是弹出主对话框。所以我们的闪屏对话框的出现和消息代码应该在它之前出现。
2.建立一个非模态对话框,来显示我们的闪屏对话框。为什么要建立一个非模态对话框呢?因为非模态对话框不会阻断我们代码的运行,这样我们就可以通过Sleep函数来轻松控制闪屏显示的时间了。(当然可能模态对话框也可以)
在上面的那段代码之前加上如下代码(紧挨着加就行了):
CMySplash spDlg;
spDlg.Create(IDD_DIALOG_MySplash);
spDlg.ShowWindow(SW_SHOW);
Sleep(2000);
spDlg.DestroyWindow();
当然你也可以用指针来实现,但是要记住用 new产生的指针在不用时要销毁掉。
CMySplash spDlg;
spDlg.Create(IDD_DIALOG_MySplash);
spDlg.ShowWindow(SW_SHOW);
Sleep(2000);
spDlg.DestroyWindow();
CMySplash* spDlg;
spDlg=new CMySplash;
spDlg->Create(IDD_DIALOG_MySplash);//通过Create函数将对话框ID与对象相关联
spDlg->ShowWindow(SW_SHOW);//显示窗口
Sleep(2000);//停留2秒
spDlg->DestroyWindow();//销毁窗口
下面在响应WM_NCDESTROY的函数OnNcDestroy()中来销毁指针
void CMySplash::OnNcDestroy()
{
CDialog::OnNcDestroy();
// TODO: Add your message handler code here
/ delete this;
}
至此再运行你的程序看一下,是不是在你主对话框出现之前弹出了闪屏?当然你也可以在闪屏对话框中响应计时器消息来制作动态的闪屏,这里就不再举例了。
- 闪屏,我们自己动手做,相当简单
- 学习东西一定要自己动手,尤其是做我们这行的................................
- 【SoftKeyboard研究系列】自己动手做最简单的SoftKeyboard
- 自己动手做按钮
- 自己动手做按钮 [转]
- 自己动手做网线
- 自己动手做QQ-特洛伊
- hoho,自己动手做图片
- 自己动手做按钮
- 自己动手做WEB控件
- 自己动手做Dialog Symbian
- 自己动手做input子系统
- 自己动手做柚子茶
- 自己动手 做rpg小游戏
- 自己动手做推送
- 自己动手做推送
- 自己动手做文件系统
- 自己动手做sidebar
- IEEE P1471的软件系统体系结构描述
- 设计模式笔记--创建型模式之一 抽象工厂
- poj 3159 heap+dijkstra
- Linq的Set操作
- C/C++中const两种用法的微秒区别
- 闪屏,我们自己动手做,相当简单
- 如何调试Cacti
- ONTOLOGY的名词解释
- 在LINUX下安装MYSQL
- 设计模式笔记--创建型模式之二 Builder
- 使用版本控制的分支合并进行开发,模拟,运营环境的统一部署
- 实验:一个进程到底能创建多少线程?
- 父亲带我去车站
- 6SQ统计插件(一款可替代Minitab,Jmp的质量小软件)