使用WNDCLASS初始化DirectX 10游戏窗口

需积分: 33 203 下载量 150 浏览量 更新于2024-08-10 收藏 6.65MB PDF 举报
"WNDCLASS与注册-dassidirect server" 在Windows编程中,WNDCLASS结构体是创建窗口类的关键,它定义了窗口的基本属性和行为。注册窗口类是创建窗口的第一步,通常在WinMain函数中进行。`InitWindowsApp`函数在这里扮演了初始化程序的角色,它负责设置窗口类并注册它。如果初始化失败,`InitWindowsApp`会返回false。 WNDCLASS结构体包含了以下字段: 1. `style`:这个字段定义了窗口类的风格,如CS_HREDRAW和CS_VREDRAW,这两个标志指示窗口在尺寸改变时自动重绘。其他风格包括WS_OVERLAPPEDWINDOW、WS_POPUP等,它们决定了窗口的外观和行为。更多风格可以在MSDN中查找。 2. `lpfnWndProc`:这是窗口过程函数的指针,即消息处理函数。所有发送给窗口的消息都将由这个函数处理。在示例中,`WndProc`函数被指定为此指针的值。这意味着所有基于此WNDCLASS创建的窗口都将使用`WndProc`来处理消息。 3. `cbClsExtra`和`cbWndExtra`:这两个字段用于分配额外的字节数供类和实例使用。通常,它们保持为0,除非有特定的需求要存储额外的数据。 4. `hInstance`:这是应用程序的实例句柄,用于标识程序实例。在WinMain中,它作为参数传递给`InitWindowsApp`。 5. `hIcon`、`hCursor`、`hbrBackground`:分别代表窗口的图标、光标和背景刷。它们可以是系统提供的默认值,也可以是自定义的资源。 6. `lpszMenuName`:指向菜单资源名称的字符串指针,如果窗口没有菜单,可以设为NULL。 7. `lpszClassName`:这是窗口类的唯一标识,通常是一个字符串,用于在注册窗口类时使用。 在注册窗口类之后,我们可以使用`RegisterClass(&wndClass)`函数将WNDCLASS结构体注册到系统中。一旦注册成功,就可以通过`CreateWindow`或`CreateWindowEx`函数创建窗口实例,这些函数需要WNDCLASS的类名作为参数。 在《Introduction to 3D Game Programming with DirectX 10》这本书中,作者Frank D. Luna介绍了使用Direct3D 10进行3D游戏编程的基础知识。这本书分为三个部分,第一部分讲解了数学基础,第二部分涵盖了Direct3D的初始化、几何体绘制、着色器、光照、纹理等基本技术,第三部分则涉及更复杂的技术和特效,如网格、地形、粒子系统等。这本书适合有一定C++基础和Win32 API经验的开发者,特别是对Direct3D 10感兴趣的游戏开发者。 在学习这本书之前,读者需要具备一定的高等数学知识、C++编程基础,熟悉Visual Studio和Win32 API。通过这本书,读者可以逐步掌握Direct3D 10的使用,并能够开发出自己的3D游戏。