源程序:

/*************************************************************************> File Name: HelloWorld.cpp> Author: YLD10> Mail: yl1315348050@yahoo.com> Created Time: 2018.5.28 23:31> Describe: Win32 Application HelloWorld.《基于 DirectX11 的 3D 图形程序设计案例教程》2.2 节程序例子 Hello World************************************************************************/// 这个头文件包含 Win32 API 的基本元素所需要的结构
#include <windows.h>// 一个窗口的句柄,这是一个全局变量,后面会用到
HWND MainWindowHandle = 0;/* * 声明初始化窗口的 InitWindowsApp 函数的函数体*/
bool InitWindowsApp(HINSTANCE instanceHandle, int show);/** 声明用于封装消息循环的 Run 函数的函数体*/
int Run();/** 声明回调函数 WnProc 的函数体*/
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);/** hInstance:是当前实例的句柄,所谓实例就是指应用程序本身* hPreInstance:不使用该参数,Win32 该参数始终为 NULL* pCmdLine:用于运行程序的命令行参数字符串* nShowCmd:指定窗口的显示方式*/
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,PSTR pCmdLine,int nShowCmd)
{
// 调用窗口初始化函数,如果调用成功则进入消息循环,否则弹出一个对话框if (!InitWindowsApp(hInstance, nShowCmd)){::MessageBox(0, L"Init - Failed", L"Error", MB_OK);return 0;}return Run();
}/*
* 声明初始化窗口的 InitWindowsApp 函数的函数体
*/
bool InitWindowsApp(HINSTANCE instanceHandle, int show)
{WNDCLASS wc;wc.style        = CS_HREDRAW | CS_VREDRAW;// 这就是一个窗口类 WNDCLASS 的对象定义窗口的样式,// 这两个标记表明当窗口的水平或垂直尺寸发生变化时,// 窗口将被重绘wc.lpfnWndProc   = WndProc;  // 这里指定回调函数的指针,与上方回调函数同名wc.cbClsExtra    = 0;wc.cbWndExtra    = 0;wc.hInstance     = instanceHandle;  // 当前应用程序实例的句柄,由 WinMain 传入wc.hIcon         = ::LoadIcon(0, IDI_APPLICATION);  // 指定图标wc.hCursor       = ::LoadCursor(0, IDC_ARROW);      // 指定光标wc.hbrBackground = static_cast<HBRUSH>(::GetStockObject(WHITE_BRUSH));wc.lpszMenuName  = 0;               // 指定有无菜单,0 为无菜单   wc.lpszClassName = L"Hello";        // 指向窗口名的指针if (!::RegisterClass(&wc)){::MessageBox(0, L"RegisterClass - Failed", 0, 0);return false;}// 这是第一次用到 MainWindowHandle,用户创建窗口MainWindowHandle = ::CreateWindow(L"Hello",       // 第一个 “Hello” 必须和 wc.lpszClassName 相同L"Hello",       // 第二个 “Hello” 是窗口的显示名称WS_OVERLAPPEDWINDOW,            // 指定这个窗口时重叠式窗口CW_USEDEFAULT,  // 表示窗口的横坐标为默认值CW_USEDEFAULT,  // 表示窗口的纵坐标为默认值CW_USEDEFAULT,  // 表示窗口的宽为默认值CW_USEDEFAULT,  // 表示窗口的高为默认值0,0,instanceHandle,0);// 如果窗口的创建失败 MainWindowHandle 将会为 0,则报错并返回if (!MainWindowHandle){::MessageBox(0, L"CreateWindow - Failed", 0, 0);return false;}// 显示窗口,用窗口句柄 MainWindoeHandle 来指定需要显示的窗口::ShowWindow(MainWindowHandle, show);//更新窗口,用窗口句柄 MainWindowHandle 来指定需要更新的窗口::UpdateWindow(MainWindowHandle);return true;
}/*
* 声明用于封装消息循环的 Run 函数的函数体
*/
int Run()
{MSG msg;::ZeroMemory(&msg, sizeof(msg));    // ZeroMemory 用 0 填充一块内存区域// GetMessage() 不断地从消息队列中检索消息,然后填充到 MSG 结构的成员while (::GetMessage(&msg, 0, 0, 0)){::TranslateMessage(&msg);       // 将消息 msg 的虚拟键转换为字符信息::DispatchMessage(&msg);        // 最终将消息传送到指定的窗口过程中,// 本程序中就是将消息传给回调函数 WndProc 中}return msg.wParam;
}/*
* 声明回调函数 WnProc 的函数体
*/
LRESULT CALLBACK WndProc(HWND windowHandle,UINT msg,WPARAM wParam,LPARAM IParam)
{// 根据参数 msg 的键值判断捕捉到的消息的类型switch (msg){// 如果按下鼠标左键则弹出消息框,这里 WM_LBUTTONDOWN 是鼠标左键的键值case WM_LBUTTONDOWN:// L"Hello, World" 是消息框中显示的内容// L"Hello" 是所在父窗口的指针// MB_OK 表示消息框显示 “确定” 按钮::MessageBox(0, L"Hello, World", L"Hello", MB_OK);return 0;// 如果按下键盘任意一个键case WM_KEYDOWN:// 如果是 ESC 键则关闭窗口if (wParam == VK_ESCAPE){::DestroyWindow(MainWindowHandle);}return 0;// 如果是关闭窗口的消息,则用 PostQuitMessage() 来退出消息循环case WM_DESTROY:::PostQuitMessage(0);return 0;}// 用 DefWindowProc 处理一些默认的消息,比如窗口的最大化、最小化、调整尺寸等return ::DefWindowProc(windowHandle,msg,wParam,IParam);
}

运行结果:

项目工程:https://github.com/YLD10/VisualStudio_Projects/tree/master/DirectX11_3D/HelloWorld

《基于 DirectX11 的 3D 图形程序设计案例教程》学习一 HelloWorld相关推荐

  1. 《基于 DirectX11 的 3D 图形程序设计案例教程》学习四 D3DTriangle

    源程序:   此次例子的大部分代码均拷贝自上一章 InitD3D 例子程序.   d3dUtility.h /********************************************* ...

  2. c语言教程的辅导书,清华大学出版社-图书详情-《C语言程序设计案例教程学习辅导》...

    01C语言是国内广泛使用的计算机语言,是很多高等学校计算机及相关专业的核心课程,以及其他理工科专业的计算机通识基础课程.于延.周国辉主编的<C语言程序设计案例教程>(清华大学出版社出版)采 ...

  3. C++程序设计案例教程(学习笔记)——Cha7多态

    面向对象技术三大特性:继承.类的封装.多态. 7.1多态的描述 7.1.1多态的含义     多态是指具有继承关系的类,拥有相同的接口(函数名.形参和返回值),并允许有各自不同的实现,且一个对象实例只 ...

  4. 《例说8051:单片机程序设计案例教程》——2-4 指令格式

    本节书摘来异步社区<例说8051:单片机程序设计案例教程>一书中的第2章,第2.4节,作者:张义和,陈敌北,更多章节内容可以访问云栖社区"异步社区"公众号查看 2-4 ...

  5. 可视化篇(二)———使用matplotlib绘制常用3D图形及案例

    可视化篇(二)---使用matplotlib绘制常用3D图形及案例 摘要 (一)添加matplotlib 3D模块 (二)3d图中绘制曲线 (三)3d图中绘制散点图 (四)3d图中绘制线框图 (五)3 ...

  6. c语言实验5上机刘若慧2017年,《《 C语言程序设计案例教程》》.ppt

    << C语言程序设计案例教程>>.ppt 课堂练习: 7.求三个整数之和: 1 只用main函数 2 用求两个整数之和的函数实现 main int a, b, c, sum; ...

  7. 《例说8051:单片机程序设计案例教程》——2-5 寻址方式

    本节书摘来异步社区<例说8051:单片机程序设计案例教程>一书中的第2章,第2.5节,作者:张义和,陈敌北,更多章节内容可以访问云栖社区"异步社区"公众号查看 2-5 ...

  8. 《例说8051:单片机程序设计案例教程》——第 2 章 输出口的应用

    本节书摘来异步社区<例说8051:单片机程序设计案例教程>一书中的第2章,作者:张义和,陈敌北,更多章节内容可以访问云栖社区"异步社区"公众号查看 第 2 章 输出口的 ...

  9. PHP入门《PHP程序设计案例教程》——PHP网站开发

    PHP入门<PHP程序设计案例教程>--PHP网站开发 web表单设计 表单数据获取和提交 1.GET方法 2.POST方法 超链接数据的获取 SESSION管理 SESSION原理 使用 ...

  10. python3程序设计基础答案刘德山_北京大学出版社《Java程序设计案例教程》答案【python程序设计案例教程微课版答案】...

    北京大学出版社<Java程序设计案例教程>答案 哎,我也在找不过时北京交通大学出版的 求大学python3程序设计基础答案 刘德山主编 网上找不到 希望大家帮帮忙 答案我也没有,如果你是计 ...

最新文章

  1. [MySQL]增加用户 授权 远程登录
  2. CSV-03- csv 读写框架支持数组、Map、Collection 等常见集合
  3. 437. Path Sum III
  4. Using dbms_shared_pool.purge to remove a single task from the library cache
  5. 5 压缩上传图片_推荐一个干净纯粹的网站,专注图片压缩、pdf相关操作
  6. 深度学习笔记(四):循环神经网络的概念,结构和代码注释
  7. c++ 开源grid控件
  8. python aiml开发文档,带有Python的AIML文件
  9. C/C++多线程面试题
  10. Hadoop HA_Yarn HA 集群的搭建
  11. [我读]十四堂人生创意课
  12. 减持奈飞增持京东健康,“贝莱德们”为何开始偏爱中国企业?
  13. 工业大数据特征有哪些 大数据工程师来告诉你
  14. [win7 百度网盘] 登录安全验证显示空白页
  15. 我为什么要写Sinon.JS
  16. 光纤收发器怎么连接?光纤收发器连接方式解析
  17. CnOpenData中国各省份官方报纸数据
  18. 芯片测试术语 ,片内测试(BIST),ATE测试
  19. 网格系统高级进阶,很好懂
  20. 74ls175四人抢答器电路图_如何使用74LS175芯片实现四人抢答器的设计

热门文章

  1. 【教程】Gentoo的安装
  2. 靶机渗透练习04-driftingblues4
  3. 如何简化美化LEfSe分析结果中的Cladogram图
  4. win10无法访问共享文件,报出错误代码0x80004005
  5. 外贸业务员询盘处理方法技巧 Google开发客户方法找网址和邮箱
  6. 你要看透的56条人生哲理
  7. 很多人生哲理好句子分享
  8. 关于「数据分析师」的一些理解
  9. 新库上线 | CnOpenDataA股上市公司裁判文书数据
  10. 搞笑GIF动图怎么制作