MFC 编写自己的特色启动窗体...........
2011-08-08 00:54
169 查看
今天看到 VC上面有个能增加启动窗体的向导 不过那个利用向导做出来启动界面代码多 我们根本无从修改 于是我摸索着写了个
启动窗体 基于对话框的启动界面 界面 是一块一块的慢慢显示 ...
涉及到的函数 :
srand((unsigned)time(NULL)); //以时间为轴随机
rand()产生 随机数
CDC::StretchBlt() //从源DC拷贝位图到目的DC 有必要可以对位图进行拉伸和 压缩
Cwnd::CreateEx()创建一个 窗体
AfxRegisterWndClass()函数返回一个已经注册了的窗口类的名字
CDC::CreateCompatibleDC()创建和某DC相兼容的DC
CWnd::CenterWindow()窗体居中
CWnd::UpdateWindow()更新窗体 这时候会 发送WM_PAINT消息 导致 OnPaint函数的调用
下面是代码具体 代码 首先创建一个 MFC基于对话框的应用程序 (一下是步骤 )
1. 定义一个 CHelloWnd 类从CWnd 类派生来
2. CHelloWnd 类添加成员 和函数
public:
void CreateHellWindow();
private:
CBitmap bit;
BITMAP info;
3. 以上添加完成之后增加 WM_PAINT 消息响应函数 void OnPaint() 函数 增加一副位图资源 IDB_BITMAP1;
// 函数1构造函数
CHelloWnd::CHelloWnd()
{
bit.LoadBitmap(IDB_BITMAP1); //加载位图
bit.GetBitmap(&info); //获得位图信息 BITMAP
}
// 函数2 CreateHellWindow()
void CHelloWnd::CreateHellWindow()
{
this->CreateEx(0,
AfxRegisterWndClass(0,LoadCursor(NULL,IDC_ARROW)), //注册窗口类
Hello Window!", //标题
WS_POPUPWINDOW,//style
0,0,
info.bmWidth,// 宽
info.bmHeight,//高
NULL,NULL,NULL);
}
// 函数3 OnPaint() 函数
void CHelloWnd::OnPaint() //调用CWnd类的 UpDateWindow会发送 WM_PAINT消息
{
CPaintDC dc(this);
CDC dcCom;
dcCom.CreateCompatibleDC(&dc); //创建兼容DC
dcCom.SelectObject(&bit); //将位图选到兼容DC中
int x=0,y=0; //随机坐标 DC绘制时候的坐标 都是相对于 客户坐标 而不是屏幕坐标
int num=0 ;//用于记录绘制次数 到100次推出 while
int check[10][10]={0}; //用于判断100个格子是否全部绘制
int stepx=info.bmWidth/10; //设置绘制的每一个小格子的高度
int stepy=info.bmHeight/10; //设置绘制的每一个小格子的宽度
srand((unsigned)time(NULL)); //以时间为轴随机
while(1)
{
x=rand()%10; //产生0-9之间的数字
y=rand()%10; //产生0-9之间的数字
if(check[x][y]) //如果已经绘制直接进入下一个循环
continue;
dc.StretchBlt(x*stepx,y*stepy,stepx,stepy,&dcCom,x*stepx,y*stepy,stepx,stepy,SRCCOPY);
check[x][y]=1 ;
num++;
if(num>=100)
break ;
Sleep(50);
}
}
以上完成之后在 APP类中的 初始化函数 CMyDlg dlg; 对话框生成之前增加如下代码
CHelloWnd *wnd=new CHelloWnd;
wnd->CreateHellWindow();
wnd->ShowWindow(SW_SHOW); //显示窗体
wnd->CenterWindow(); //窗体居中
wnd->UpdateWindow(); //发送WM_PAINT 消息
到这里一个 启动窗体就做好了 大致就是这样
启动窗体 基于对话框的启动界面 界面 是一块一块的慢慢显示 ...
涉及到的函数 :
srand((unsigned)time(NULL)); //以时间为轴随机
rand()产生 随机数
CDC::StretchBlt() //从源DC拷贝位图到目的DC 有必要可以对位图进行拉伸和 压缩
Cwnd::CreateEx()创建一个 窗体
AfxRegisterWndClass()函数返回一个已经注册了的窗口类的名字
CDC::CreateCompatibleDC()创建和某DC相兼容的DC
CWnd::CenterWindow()窗体居中
CWnd::UpdateWindow()更新窗体 这时候会 发送WM_PAINT消息 导致 OnPaint函数的调用
下面是代码具体 代码 首先创建一个 MFC基于对话框的应用程序 (一下是步骤 )
1. 定义一个 CHelloWnd 类从CWnd 类派生来
2. CHelloWnd 类添加成员 和函数
public:
void CreateHellWindow();
private:
CBitmap bit;
BITMAP info;
3. 以上添加完成之后增加 WM_PAINT 消息响应函数 void OnPaint() 函数 增加一副位图资源 IDB_BITMAP1;
// 函数1构造函数
CHelloWnd::CHelloWnd()
{
bit.LoadBitmap(IDB_BITMAP1); //加载位图
bit.GetBitmap(&info); //获得位图信息 BITMAP
}
// 函数2 CreateHellWindow()
void CHelloWnd::CreateHellWindow()
{
this->CreateEx(0,
AfxRegisterWndClass(0,LoadCursor(NULL,IDC_ARROW)), //注册窗口类
Hello Window!", //标题
WS_POPUPWINDOW,//style
0,0,
info.bmWidth,// 宽
info.bmHeight,//高
NULL,NULL,NULL);
}
// 函数3 OnPaint() 函数
void CHelloWnd::OnPaint() //调用CWnd类的 UpDateWindow会发送 WM_PAINT消息
{
CPaintDC dc(this);
CDC dcCom;
dcCom.CreateCompatibleDC(&dc); //创建兼容DC
dcCom.SelectObject(&bit); //将位图选到兼容DC中
int x=0,y=0; //随机坐标 DC绘制时候的坐标 都是相对于 客户坐标 而不是屏幕坐标
int num=0 ;//用于记录绘制次数 到100次推出 while
int check[10][10]={0}; //用于判断100个格子是否全部绘制
int stepx=info.bmWidth/10; //设置绘制的每一个小格子的高度
int stepy=info.bmHeight/10; //设置绘制的每一个小格子的宽度
srand((unsigned)time(NULL)); //以时间为轴随机
while(1)
{
x=rand()%10; //产生0-9之间的数字
y=rand()%10; //产生0-9之间的数字
if(check[x][y]) //如果已经绘制直接进入下一个循环
continue;
dc.StretchBlt(x*stepx,y*stepy,stepx,stepy,&dcCom,x*stepx,y*stepy,stepx,stepy,SRCCOPY);
check[x][y]=1 ;
num++;
if(num>=100)
break ;
Sleep(50);
}
}
以上完成之后在 APP类中的 初始化函数 CMyDlg dlg; 对话框生成之前增加如下代码
CHelloWnd *wnd=new CHelloWnd;
wnd->CreateHellWindow();
wnd->ShowWindow(SW_SHOW); //显示窗体
wnd->CenterWindow(); //窗体居中
wnd->UpdateWindow(); //发送WM_PAINT 消息
到这里一个 启动窗体就做好了 大致就是这样
相关文章推荐
- MFC 编写自己的特色启动窗体...........
- MFC 编写自己的特色启动窗体...........
- MFC 把自己写的程序设置成开机启动
- VC编写自己构造http协议数据的post上传图片类(MFC环境 带编码转换)(转)
- linux 自己编写脚本,开机自动启动
- 转帖:MFC 对话框启动隐藏窗体的方法
- VC编写自己构造http协议数据的post上传图片类(MFC环境 带编码转换)(转)
- 如何给自己编写的程序隐蔽的设置开机启动
- VC编写自己构造http协议数据的post上传图片类(MFC环境 带编码转换)
- MFC 对于使用自己的线进行启动其他进程的虚拟地址映射问题
- python3 自己编写了一个Mac下分类软件,每次只需要启动 terminal 终端就会自动分类。
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- JSVC编写自己的Linux启动脚本
- MFC对话框在启动时隐藏自己
- 自己编写的http启动脚本2
- 编写我们自己的操作系统-用启动扇区启动我的电脑
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- 开机自动启动自己编写的QT程序
- 《30天编写自己的操作系统》 关于如何让虚拟机从U盘启动