码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • VisualC++游戏制作MFC版本


    页面视觉

    修改窗口大小

    OnInitDialog

    CRect temprect(0,0,1640,1480);
    CWnd::SetWindowPos(NULL,0,0,temprect.Width(),temprect.Height(),SWP_NOZORDER|SWP_NOMOVE);
    

    修改鼠标指针样式

    IDC_CURSOR

    BOOL CFinalProjectDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
    {
    	//HCURSOR hcur = ::LoadCursor(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDC_CURSOR));
    	// 能修改指针大小
    	HCURSOR hcur = (HCURSOR)::LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDC_CURSOR), IMAGE_CURSOR, 48, 48, LR_COPYFROMRESOURCE);
    	::SetCursor(hcur);
    	return TRUE;
    	return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
    }
    

    添加背景图片

    OnPaint()函数,在else中进行修改。
    1.首先注释掉CDialog::OnPaint()函数
    CDialog是个对话框类,OnPaint()是成员函数,是对窗口进行重画,注释掉该语句否则会调用该语句不断重画,而不会执行下面添加的代码。注释掉该语句后最小化对话框后发现控件不可见,不过移动鼠标后又能看见。

    2.添加代码

    else 
    {
        CPaintDC dc(this);
        CRect rect;
        GetClientRect(&rect);
        CDC dcbmp;
        dcbmp.CreateCompatibleDC(&dc);
        CBitmap bmpbackground;
        bmpbackground.LoadBitmap(IDB_BITMAP1);//载入资源中的图片到CBitmap
        BITMAP mess_bmp;
        bmpbackground.GetBitmap(&mess_bmp);//获取当前位图信息
        dcbmp.SelectObject(&bmpbackground);
        dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcbmp, 0, 0, mess_bmp.bmWidth, mess_bmp.bmHeight, SRCCOPY);
    }
    

    添加背景音乐

    先给需要的cpp文件加上这些头文件

    #include "resource.h"
    #include 
    #include 
    #include "string.h"
    #include  
    #include
    #include 
    #pragma comment (lib, "Winmm.lib");
    

    在需要放音乐的地方

    PlaySound((LPCTSTR)IDR_WelcomeBacksound, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
    

    SND_FILENAME表示pszSound参数指定的是文件名, pszSound还可以指定资源、内存音乐、系统音乐等等
    SND_ASYNC:用异步方式播放声音,PlaySound函数在开始播放后立即返回
    SND_SYNC:同步播放声音,在播放完后PlaySound函数才返回
    SND_LOOP一遍遍的重复播放声音,必须与SND_ASYNC标志一块使用

    音乐不断播放

    PlaySound("C://WINDOWS//Media//Windows XP关机.wav", 
    NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
    

    不断播放,到达一个关卡的时候停止原来的音乐

    PlaySound(TEXT("C://WINDOWS//Media//Windows XP启动.wav"),NULL,SND_FILENAME|SND_ASYNC);
    
    MessageBox(NULL,TEXT(""),TEXT(""),MB_OK);
    
    PlaySound(TEXT("C://WINDOWS//Media//Windows XP关机.wav"),NULL,SND_FILENAME|SND_ASYNC);
    
    MessageBox(NULL,TEXT(""),TEXT(""),MB_OK);
    

    只能同时播放一段音乐,启动新的、旧的就被停了

    只是停止目前的播放而不播放新音乐

    只要给PlaySound的第一参数传递NULL就可以停止目前的播放了。

    PlaySound("C://WINDOWS//Media//Windows XP关机.wav",
    
    NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
    
    MessageBox(NULL,"点确定终止音乐","信息",MB_OK);
    
    PlaySound(NULL,NULL,SND_FILENAME);
    
    MessageBox(NULL,"音乐被终止","信息",MB_OK);
    

    将位图作为按钮

    PNG贴图按钮

    m_bitmapStart.LoadBitmap(IDB_BITMAP_START);
    HBITMAP hBitmap = (HBITMAP)m_bitmapStart.GetSafeHandle();
    m_buttonStart.SetBitmap(hBitmap);
    

    程序的执行流程

    程序的执行流程

    立体图形

    OpenGL

    MFC+OPENGL配置+显示三维图形实现 旋转平移缩放+光照效果

    使用MFC的CDC类绘制三维坐标系及球面函数
    mfc + opengl Gizmo 3D Tool
    基于MFC的无人机3D飞行姿态控制系统
    3D model viewer
    Simple_Cpp_3D_Plotter
    3DGraphicsApp
    3D House, Cube, Pyramid, Sphere and Spiral
    dialog 3d model view
    “三维矢量场生成程序” 开发文档
    直接输入的 3DRudder 设备

    游戏参考

    GitHub - Johnsoncy123/-: 炮弹,火箭弹以及导弹的弹道仿真,包含3自由度弹道和6自由度弹道弹道,有控弹道与无控弹道均可以,C++/MFC和Matlab/Simulink仿真

  • 相关阅读:
    新增时无法新增类型的对象Date
    WEB静态网页作业 我的家乡南宁 家乡旅游网页设计制作 简单静态HTML网页作品
    如何才能设计出“好的”测试用例?
    CSS详细基础(二)文本样式
    Error: A JNI error has occurred, please check your installation and try again解决
    【CSS3】CSS3 3D 转换 ① ( CSS3 3D 转换简介 | 3D 物体与 2D 物体区别 | 3D 空间坐标系 | 常用的 3D 转换属性 | 3D 位移转换语法 | 代码示例 )
    快速入门到精通到实战SpringBootWeb详解!
    5.5V-65V Vin同步降压控制器,具有线路前馈SCT82630DHKR
    GBase 8a的SNMP Trap 告警
    IO 原理
  • 原文地址:https://blog.csdn.net/Hinton_/article/details/139888407
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号