?? glframe.h
字號:
//======================================================================
/**
* @file GLFrame.h
*
* 項目描述: 3DS文件載入
* 文件描述: 鍵盤類和程序框架類
* 適用平臺: Windows98/2000/NT/XP
*
* 作者: WWBOSS
* 電子郵件: wwboss123@gmail.com
* 創建日期: 2006-09-13
* 修改日期: 2006-10-10
*
* 你必須在你的繼承類中完成以下函數的實現
*
* GLApplication * GLApplication::Create(const char * class_name)
* 創建你的子類的一個實例
*
* bool Init();
* 執行所有的初始化工作,如果成功函數返回true
*
* void Uninit();
* 執行所有的卸載工作
*
* void Update(DWORD milliseconds);
* 執行所有的更新操作,傳入的參數為兩次操作經過的時間,以毫秒為單位
*
* void Draw();
* 執行所有的繪制操作
*/
//======================================================================
#ifndef __GLFRAME_H__
#define __GLFRAME_H__
#include "GLWindow.h" /**< 包含GLWindow.h頭文件 */
/** 定義鍵盤類 */
class Keys
{
public:
/** 構造函數 */
Keys() { Clear(); }
/** 清空所有的按鍵信息 */
void Clear() { ZeroMemory(&m_KeyDown, sizeof(m_KeyDown)); }
/** 判斷某個鍵是否按下 */
bool IsPressed(unsigned int key) { return (key < MAX_KEYS) ? (m_KeyDown[key] == true) : false; }
/** 設置某個鍵被按下 */
void SetPressed(unsigned int key) { if (key < MAX_KEYS) m_KeyDown[key] = true; }
/** 設置某個鍵被釋放 */
void SetReleased(unsigned int key) { if (key < MAX_KEYS) m_KeyDown[key] = false; }
private:
static const unsigned int MAX_KEYS = 256;
bool m_KeyDown[MAX_KEYS]; /**< 保存256個按鍵的狀態 */
};
/** 基本的程序類,繼承它用來創建OpenGL程序 */
class GLApplication
{
public:
/** 創建一個全局的Create函數,這個函數必須被繼承類實現 */
static GLApplication * Create(const char * class_name); /**< 創建你自己的子類 */
/** 虛析構函數 */
virtual ~GLApplication() {};
protected:
/** 下面的函數必須被繼承類實現,完成基本的OpenGL渲染過程 */
virtual bool Init() = 0; /**< OpenGL的初始化 */
virtual void Uninit() = 0; /**< OpenGL的卸載 */
virtual void Update(DWORD milliseconds) = 0; /**< 執行OpenGL程序的更新 */
virtual void Draw() = 0; /**< 繪制OpenGL場景 */
/** 通用的函數 */
void ToggleFullscreen(); /**< 切換 全屏/窗口模式 */
void TerminateApplication(); /**< 結束程序 */
void ResizeDraw(bool enable) { m_ResizeDraw = enable; } /**< 設置在窗口改變大小的時候,可以繪制 */
Keys m_Keys; /**< 按鍵類 */
/** 構造函數 */
GLApplication(const char * class_name);
private:
/** 程序的主循環 */
friend int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
int Main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
/** 消息處理回調函數 */
friend LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT Message(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static const UINT WM_TOGGLEFULLSCREEN = (WM_USER + 1); /**< 自定義消息,在切換窗口模式的時候發送 */
GLWindow m_Window; /**< Window類 */
const char* m_ClassName; /**< 程序名 */
bool m_IsProgramLooping; /**< 程序循環標記,如果為false,則退出程序 */
bool m_CreateFullScreen; /**< 若為true,則創建全屏模式 */
bool m_IsVisible; /**< 窗口是否可見 */
bool m_ResizeDraw; /**< 是否在改變大小時,調用了繪制函數 */
DWORD m_LastTickCount; /**< 上一次計時器的值 */
};
#endif // __GLFRAMEWORK_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -