Direct3D 12——学习——初始化D3D——创建Windows窗口

#include <wrl.h>

LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

	return DefWindowProc(hwnd, msg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
    PSTR cmdLine, int showCmd)
{
	WNDCLASSEX WindowsClass;
	WindowsClass.cbSize = sizeof(WNDCLASSEX);//该对象实际占用多大内存
	WindowsClass.cbClsExtra = 0; //指定紧随在 WNDCLASS 数据结构后分配的字节数
	WindowsClass.cbWndExtra = 0;//指定紧随在窗口实例之后分配的字节数  
	WindowsClass.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH);    //窗口类的背景画刷
	WindowsClass.hCursor = LoadCursor(NULL, IDC_ARROW);//设置一个箭头光标
	WindowsClass.hIcon = LoadIcon(0, IDI_APPLICATION); 窗口的最小化图标为缺省图标
	WindowsClass.hIconSm = NULL;//应用程序显示在左上角的图标
	WindowsClass.hInstance = hInstance; //窗口实例
	WindowsClass.lpszClassName = L"D3D";//窗口名字
	WindowsClass.lpszMenuName = nullptr;//窗口类的菜单资源名
	WindowsClass.style = CS_VREDRAW | CS_HREDRAW;//怎么绘制窗口 垂直和水平重绘
	WindowsClass.lpfnWndProc = MainWndProc;//Windows消息处理函数



	//注册窗口
	ATOM RegisterAtom = RegisterClassEx(&WindowsClass);
	if (!RegisterAtom)
	{
		MessageBox(NULL, L"Register windows class fail.", L"Error", MB_OK);
	}

	//根据请求的客户区域尺寸计算窗口矩形尺寸
	RECT R = { 0, 0, 800, 600 };

	//@rect 视口
	//WS_OVERLAPPEDWINDOW 适口风格
	//NULL 没有菜单
	AdjustWindowRect(&R, WS_OVERLAPPEDWINDOW, NULL);
	int width = R.right - R.left;
	int height = R.bottom - R.top;


	HWND WindowsHandle = CreateWindowEx(
		NULL,//窗口额外的风格
		L"D3D", // 窗口名称
		L"YoungDreams",//会显示在窗口的标题栏上去
		WS_OVERLAPPEDWINDOW, //窗口风格
		100, 100,//窗口的坐标
		width, height,//
		NULL, //副窗口句柄
		nullptr, //菜单句柄
		hInstance,//窗口实例
		NULL);//参数可以对窗口做额外设置

	if (!WindowsHandle)
	{

		MessageBox(0, L"CreateWindow Failed.", 0, 0);
		return false;
	}

	ShowWindow(WindowsHandle, SW_SHOW);
	UpdateWindow(WindowsHandle);


	
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值