/**
 * @file PlatformTypes.h
 * @brief 平台窗口系统公共类型定义。
 * @details
 * 该文件集中声明平台窗口创建所需的数据结构，包括：
 * - window_proc：应用层窗口消息回调签名；
 * - window_handle：原生窗口句柄别名；
 * - window_init_info：窗口创建参数（父窗口、标题、位置、尺寸）。
 */
#pragma once
#include "CommonHeader.h"


#ifdef _WIN64
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

#include <Windows.h>

namespace XEngine::platform {

/**
 * @brief 窗口消息回调函数签名。
 */
using window_proc = LRESULT(*)(HWND, UINT, WPARAM, LPARAM);
/**
 * @brief 原生窗口句柄类型别名。
 */
using window_handle = HWND;

/**
 * @brief 窗口初始化参数。
 */
struct window_init_info
{
	window_proc		callback{ nullptr };
	window_handle	parent{ nullptr };
	const wchar_t*	caption{ nullptr };
	s32				left{ 0 };
	s32				top{ 0 };
	s32				width{ 0 };
	s32				height{ 0 };
};
}

#endif // _WIN64
