//-----------------------------------【WndProc( )函数】-------------------------------------- // 描述:窗口过程函数WndProc,对窗口消息进行处理 //------------------------------------------------------------------------------------------------ LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) //switch语句开始 { case WM_PAINT: // 若是客户区重绘消息 Direct3D_Render(hwnd); //调用Direct3D渲染函数 ValidateRect(hwnd, NULL); // 更新客户区的显示 break; //跳出该switch语句 case WM_KEYDOWN: // 若是键盘按下消息 if (wParam == VK_ESCAPE) // 如果被按下的键是ESC DestroyWindow(hwnd); // 销毁窗口, 并发送一条WM_DESTROY消息 break; //跳出该switch语句 case WM_DESTROY: //若是窗口销毁消息 Direct3D_CleanUp(); //调用自定义的资源清理函数Game_CleanUp()进行退出前的资源清理 PostQuitMessage( 0 ); //向系统表明有个线程有终止请求。用来响应WM_DESTROY消息 break; //跳出该switch语句 default: //若上述case条件都不符合,则执行该default语句 return DefWindowProc( hwnd, message, wParam, lParam ); //调用缺省的窗口过程 } return 0; //正常退出 }
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_PAINT: // 客户区重绘消息 Direct3D_Render(hwnd); //调用Direct3D_Render函数,进行画面的绘制 ValidateRect(hwnd, NULL); // 更新客户区的显示 break; //跳出该switch语句 case WM_KEYDOWN: // 键盘按下消息 if (wParam == VK_ESCAPE) // ESC键 DestroyWindow(hwnd); // 销毁窗口, 并发送一条WM_DESTROY消息 break; case WM_DESTROY: //窗口销毁消息 Direct3D_CleanUp(); //调用Direct3D_CleanUp函数,清理COM接口对象 PostQuitMessage(0); //向系统表明有个线程有终止请求。用来响应WM_DESTROY消息 break; //跳出该switch语句 default: //若上述case条件都不符合,则执行该default语句 return DefWindowProc(hwnd, message, wParam, lParam); //调用缺省的窗口过程来为应用程序没有处理的窗口消息提供缺省的处理。 } return 0; }