#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;
}
Direct3D 12——学习——初始化D3D——创建Windows窗口
于 2023-03-27 21:34:16 首次发布