给VS2008/VS2010nbsp;MFC项目添加…

2024-06-04 18:58
文章标签 项目 mfc vs2008 vs2010nbsp

本文主要是介绍给VS2008/VS2010nbsp;MFC项目添加…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在VC6.0时代,我们通过在MFC工程中插入Splash组件来简单方便的实现这个功能,但在VS2008以后就没有了这个功能,所以如果想给自己的程序添加一个显示Logo的启动画面,就需要自己添加代码来实现,参考了下VC6.0中这个Splash组件添加后的代码,就很容易在自己的项目里实现这个功能。如下图。

 

首先,在菜单的“项目”中选择“类向导”,生成一个启动画面的Splash类。


 

然后,实现代码主要是在CwzdSplash类的头文件和cpp文件中实现。在CwzdSplash类的头文件中我们添加下面的代码:

 

 

[cpp]   view plain copy
  1. #pragma once  
  2. // CWzdSplash  
  3. class CWzdSplash public CWnd  
  4.  
  5.     DECLARE_DYNAMIC(CWzdSplash)  
  6. public 
  7.     CWzdSplash();  
  8.     virtual ~CWzdSplash();  
  9. protected 
  10.     DECLARE_MESSAGE_MAP()  
  11. public 
  12.     CBitmap m_bitmap;  
  13. //  void Create(void);  
  14.     void Create(UINT nBitmapID);  
  15.     afx_msg void OnPaint();  
  16.     afx_msg void OnTimer(UINT_PTR nIDEvent);  
  17. };  
 


在CwzdSplash类的cpp文件中我们添加下面的代码:


 

[cpp]   view plain copy
  1. // WzdSplash.cpp 实现文件  
  2. //  
  3. #include "stdafx.h"  
  4. #include "TinyPlusCompiler.h"  
  5. #include "WzdSplash.h"  
  6. // CWzdSplash  
  7. IMPLEMENT_DYNAMIC(CWzdSplash, CWnd)  
  8.     CWzdSplash::CWzdSplash()  
  9.  
  10.  
  11. CWzdSplash::~CWzdSplash()  
  12.  
  13.  
  14. BEGIN_MESSAGE_MAP(CWzdSplash, CWnd)  
  15.     ON_WM_PAINT()  
  16.     ON_WM_TIMER()  
  17. END_MESSAGE_MAP()  
  18. // CWzdSplash 消息处理程序  
  19. void CWzdSplash::Create(UINT nBitmapID)  
  20.  
  21.     m_bitmap.LoadBitmap(nBitmapID);  
  22.     BITMAP bitmap;  
  23.     m_bitmap.GetBitmap(&bitmap);  
  24.     //CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,0,0,bitmap.bmWidth,bitmap.bmHeight,NULL,0);  
  25.     CreateEx(0,  
  26.             AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),  
  27.             NULL, WS_POPUP WS_VISIBLE, 0, 0, bitmap.bmWidth, bitmap.bmHeight, NULL NULL);  
  28.  
  29. void CWzdSplash::OnPaint()  
  30.  
  31.     // TODO: 在此处添加消息处理程序代码  
  32.     // 不为绘图消息调用 CWnd::OnPaint()  
  33.     CPaintDC dc(this); // device context forpainting  
  34.     BITMAP bitmap;  
  35.     m_bitmap.GetBitmap(&bitmap);  
  36.     CDC dcComp;  
  37.     dcComp.CreateCompatibleDC(&dc);  
  38.     dcComp.SelectObject(&m_bitmap);  
  39.     // draw bitmap  
  40.     dc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);  
  41.  
  42. void CWzdSplash::OnTimer(UINT_PTR nIDEvent)  
  43.  
  44.     // TODO: 在此添加消息处理程序代码和/或调用默认值  
  45.     //CWnd::OnTimer(nIDEvent);  
  46.     DestroyWindow(); //销毁初始画面窗口  
  47.  


最后在项目的主窗口视图的Create函数中添加下面的实例化过程就可以显示出我们自定义的Logo启动画面了:

 

[c-sharp]   view plain copy
  1. ///显示Splash,2010-10-15///  
  2.        CWzdSplash wndSplash;                 //创建启动窗口类的实例  
  3. wndSplash.Create(IDB_SPLASH);  
  4. wndSplash.CenterWindow();  
  5. wndSplash.UpdateWindow();          //send WM_PAINT  
  6. Sleep(1500);  
  7. wndSplash.DestroyWindow();//销毁初始画面窗口  



注明一下要注意的地方:wndSplash.Create(IDB_SPLASH);中的IDB_SPLASH是在添加位图资源时添加进来的资源ID,自己可以定义自己所喜欢的启动图画。


如果不使用Sleep()函数让线程休眠几秒,我们很难看到这个启动画面,但这样存在一个问题,让线程休眠不是一个好的办法,感觉应该用定时器去实现这功能的,但不是很熟悉定时器的使用,研究一下再把它改过来。

这篇关于给VS2008/VS2010nbsp;MFC项目添加…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030843

相关文章

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

vue3项目将所有访问后端springboot的接口统一管理带跨域

vue3项目将所有访问后端springboot的接口统一管理带跨域 一、前言1.安装Axios2.创建Axios实例3.创建API服务文件4.在组件中使用API服务 二、跨域三、总结 一、前言 在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTT

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

局域网内vue2 配置本地IP地址访问项目

在日常开发中同事可能需要访问你的前端项目,可以通过配置实现通过ip访问 一.首先找到config文件夹目录下的 index.js文件             将此处的host的值修改为0.0.0.0(即 host: 0.0.0.0) // Various Dev Server settings//host: 'localhost' //将localhost进行替换成 0.0.0.0host:

把Tiled中做出的地图弄到项目中~~就是懒,为了以后直接复制写过来

1.现在.h中声明private: cocos2d::CCSprite* ninja; cocos2d::CCTMXTiledMap*  tileMap; 然后.cpp中加入tileMap = CCTMXTiledMap::create("MyTileMap.tmx"); CCTMXLayer* backLayer = tileMap->layerNamed("Tile L

CocoStudio中的UI弄到项目中

1、   与alpah版相比,beta版中更改了创建的脚本,可以自定义项目的目录,接下来我们看看。先上图: 2、项目创建     找到 cocos2dx根目录/tools/project-creator/create_project.py文件,双击运行即可。如果未安装python环境,则需要下载安装。脚本运行起来,会显示一个图形界面,用以设置相应的项目

计算机Java项目|基于SpringBoot的网上摄影工作室

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路  关注作者有好处 文末获取源码  项目编号:L-BS-QBBSSPRINGBOOT