Новичок
Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.1.2011
Репутация: нет Всего: нет
|
Необходимо коректно завершить программу по нажатию любой клавиши Код | /************************** * Includes * **************************/
#include <stdio.h> #include <windows.h> #include <gl/gl.h> #include <mmsystem.h> #pragma comment(lib, "winmm.lib")
/************************** * Function Declarations * **************************/
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC); void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);
/************************** * WinMain * **************************/
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow) { WNDCLASS wc; HWND hWnd; HDC hDC; HGLRC hRC; MSG msg; BOOL bQuit = FALSE; float theta = 0.0f;
/* register window class */ wc.style = CS_OWNDC; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon (NULL, IDI_APPLICATION); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "GLSample"; RegisterClass (&wc);
/* create main window */ hWnd = CreateWindowEx( WS_EX_TOOLWINDOW, "STATIC", NULL, SS_OWNERDRAW|WS_MAXIMIZE|WS_VISIBLE|WS_POPUP, 0, 0, 1, 1, NULL, NULL, NULL, NULL );
/* enable OpenGL for the window */ EnableOpenGL (hWnd, &hDC, &hRC); ///////////////////////////////// //Îòêðûòèå BMP
FILE* fp; fp = fopen("sprit.bmp", "r"); long int pos; //pos = ftell(fp); int offset; //fseek(fp, 10, pos);
typedef struct tagBITMAPFILEHEADER { WORD bfType; // ñìåùåíèå 0 îò íà÷àëà ôàéëà DWORD bfSize; // ñìåùåíèå 2 îò íà÷àëà ôàéëà, äëèíà 4 WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; // ñìåùåíèå 10 îò íà÷àëà ôàéëà, äëèíà 4 } BITMAPFILEHEADER, *PBITMAPFILEHEADER;
struct { DWORD bV5Size; LONG bV5Width; LONG bV5Height; WORD bV5Planes; WORD bV5BitCount; DWORD bV5Compression; DWORD bV5SizeImage; LONG bV5XPelsPerMeter; LONG bV5YPelsPerMeter; DWORD bV5ClrUsed; DWORD bV5ClrImportant; DWORD bV5RedMask; DWORD bV5GreenMask; DWORD bV5BlueMask; DWORD bV5AlphaMask; DWORD bV5CSType; CIEXYZTRIPLE bV5Endpoints; DWORD bV5GammaRed; DWORD bV5GammaGreen; DWORD bV5GammaBlue; DWORD bV5Intent; DWORD bV5ProfileData; DWORD bV5ProfileSize; DWORD bV5Reserved; } BITMAPV5HEADER, *PBITMAPV5HEADER;
tagBITMAPFILEHEADER* tb;
//fread(tb, sizeof(PBITMAPFILEHEADER), 1, fp); //Çàâåðøåíèå ////////////////////////////////
/* program main loop */ while (!bQuit) { /* check for messages */ if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) { /* handle or dispatch messages */ if (msg.message == WM_QUIT) { bQuit = TRUE; } else { TranslateMessage (&msg); DispatchMessage (&msg); } } else { /* OpenGL animation code goes here */ //mciSendString("play C:\\ding.wav wait", NULL, 0, NULL); glClearColor (0.0f, 0.0f, 0.0f, 0.0f); glClear (GL_COLOR_BUFFER_BIT);
glPushMatrix (); glRotatef (theta, 0.0f, 0.0f, 1.0f);
glBegin (GL_POINTS); glColor3f (1.0f, 1.0f, 1.0f); glVertex2f (0.5f, 0.05f); glEnd (); glPopMatrix ();
SwapBuffers (hDC);
theta += 0.2f; Sleep (1); } }
/* shutdown OpenGL */ DisableOpenGL (hWnd, hDC, hRC);
/* destroy the window explicitly */ DestroyWindow (hWnd);
return msg.wParam; }
/******************** * Window Procedure * ********************/
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { }
/******************* * Enable OpenGL * *******************/
void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC) { PIXELFORMATDESCRIPTOR pfd; int iFormat;
/* get the device context (DC) */ *hDC = GetDC (hWnd);
/* set the pixel format for the DC */ ZeroMemory (&pfd, sizeof (pfd)); pfd.nSize = sizeof (pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = ChoosePixelFormat (*hDC, &pfd); SetPixelFormat (*hDC, iFormat, &pfd);
/* create and enable the render context (RC) */ *hRC = wglCreateContext( *hDC ); wglMakeCurrent( *hDC, *hRC );
}
/****************** * Disable OpenGL * ******************/
void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC) { wglMakeCurrent (NULL, NULL); wglDeleteContext (hRC); ReleaseDC (hWnd, hDC); }
|
|