您的位置:首页 > 其它

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 消息

到这里一个 启动窗体就做好了 大致就是这样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: