MFC 编写自己的特色启动窗体...........

简介:    今天看到  VC上面有个能增加启动窗体的向导  不过那个利用向导做出来启动界面代码多 我们根本无从修改  于是我摸索着写了个  启动窗体 基于对话框的启动界面  界面 是一块一块的慢慢显示 .
 

 今天看到  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 消息 


     到这里一个 启动窗体就做好了 大致就是这样

 

  

目录
相关文章
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(二十九)(3)
SqlAlchemy 2.0 中文文档(二十九)
231 4
|
Java
java学习第三天笔记-运算符10-短路逻辑运算符55
java学习第三天笔记-运算符10-短路逻辑运算符55
215 0
java学习第三天笔记-运算符10-短路逻辑运算符55
|
人工智能 Kubernetes Cloud Native
聚焦云原生,阿里云与 CNCF 共话「云未来,新可能」
12 月 9 日,一场属于中国开发者的年度技术盛宴即将拉开帷幕 —— 由云原生计算基金会 CNCF 主办的 KubeCon + CloudNativeCon + Open Source Summit China 2021 将以线上直播的方式与中国开发者们见面。
聚焦云原生,阿里云与 CNCF 共话「云未来,新可能」
|
监控 前端开发
Webpack 2 视频教程 005 - Webpack 编译输出日志
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的。
1365 0
|
1天前
|
云安全 人工智能 运维
阿里云SecOps Agent,全新安全跨产品执行体验
自然语言驱动 云安全中心/WAF/CFW/ 等多款安全产品联动
1570 1
|
12天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。