MFC 创建启动画面的实现
来源:互联网 发布:软件测试费 编辑:程序博客网 时间:2024/04/28 23:46
今天闲来无事,就研究了下启动画面的创建过程,现在向大家展示下实现过程。
一:首先要准备一个位图资源,自己可以在画图程序里面画一个,或者从网上DOWN一个,这个就不多说了。
二:创建一个C++位图类,继承与CBitmap类,姑且命名为CWszBitmap
三:创建一个启动窗口类,继承与CWnd类,命名为CWzSplash 类, 然后为该类添加一个CWszBitmap的对象m_bitmap.
然后为该类添加一个成员函数Create用来创建启动窗口,代码如下:
void CWzSplash::Create(UINT nbitmapID)
{
m_bitmap.LoadBitmapW(nbitmapID);
BITMAP bitmap;
m_bitmap.GetBitmap(&bitmap);
int x=(::GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth)/2;
int y=(::GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight)/2;
CRect rect(x,y,x+bitmap.bmWidth,y+bitmap.bmHeight);
CreateEx(0,AfxRegisterWndClass(0),L"Hello",WS_POPUP|WS_VISIBLE,rect,NULL,0);
SetTimer(1,1,NULL);//定时器用来控制什么时刻销毁该启动窗口
}
为了使位图资源在启动窗口中不消失,我们还要为该类添加WM_PAINT消息响应函数来重绘窗口,代码如下:
void CWzSplash::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CWnd::OnPaint()
BITMAP bitmap;
m_bitmap.GetBitmap(&bitmap);
CDC bitmapDC;
bitmapDC.CreateCompatibleDC(&dc);
bitmapDC.SelectObject(m_bitmap);
dc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&bitmapDC,0,0,SRCCOPY);
}
然后为该类设置一个定时器响应函数,代码如下:
void CWzSplash::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
DestroyWindow(); //销毁初始画面窗口
AfxGetMainWnd()->UpdateWindow();//刷新主窗口
CWnd::OnTimer(nIDEvent);
}
四 每个类中包含其他类的头文件大家自己写吧,在此不多说了。
五: 最后我们在应用程序InitInstance()初始化函数中添加如下代码,代码要写在函数内开始处,
CWzSplash ws;
ws.Create(IDB_BITMAP_BEGIN);//IDB_BITMAP_BEGIN位图资源ID
ws.UpdateWindow();
Sleep(2000);
到此一个基于对话框程序的启动窗口就写完了,大伙可以自己动手看看效果吧!
- MFC 创建启动画面的实现
- MFC创建一个程序启动画面
- Android启动画面的实现
- MFC 设置启动画面
- MFC设置启动画面
- VS2008创建启动画面
- C#创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Android创建启动画面
- Switching Cameras at runtime
- 实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。
- 转:临界区的产生
- 读书笔记 第七章-进程环境
- 体验Windows 2008 R2的RemoteApp
- MFC 创建启动画面的实现
- 【哈哈,我太牛了】被中差评逼出来的终极解决方案!!
- 浅谈白盒测试中桩函数的灵活应用
- Finder 异常买家检测客户端
- QPushButton 之 default、autoDefault 分析
- Oracle 中count函数用法
- 数据库服务器 SQLite
- CentOS 6.3 如何将自动挂载的磁盘不显示在桌面上
- 计算机图形学平台 VTK