Dodanie tylko kilka linijek do kodu --> pilnie

Odpowiedz Nowy wątek
2007-05-30 11:22

Rejestracja: 12 lat temu

Ostatnio: 11 lat temu

0

Mam pytanie --> mógłby mi ktoś do tego kodu co zaraz dam dodać taka opcję jak:
Zapytanie uzytkownika o to czy włączyć fullscreen : Yes, No --> jesli yes to sie włączy jesli no to nie
Oto kod:

#define WIN32_LEAN_AND_MEAN

/////////////////////
Pliki nazgłówkowe
/////////////////////
#include<windows.h>
#include<gl/gl.h>
#include<gl/glu.h>
#include<gl/glaux.h>

////////////////////
Zmienne globalne
////////////////////
bool fullScreen = true; //aplikacja rozpocznie sie w trybie pelnoekranowym
float angle=0.0f;
HDC g_HDC; //kontekst urządzenia

///////////////////////////////////////////////////////////////
funkcja okreslająca format pikseli dla kontekstu urządzenia
///////////////////////////////////////////////////////////////
void SetupPixelFormat(HDC hDC)
{
int nPixelFormat;
static PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), //rozmiar struktury
1, //domyslna wersja
PFD_DRAW_TO_WINDOW| //grafika w oknie
PFD_SUPPORT_OPENGL| //grafika w Opengl
PFD_DOUBLEBUFFER, //podwójne buforowanie
PFD_TYPE_RGBA, //tryb kolorów RGBA
32, //32-bitowy opsi kolorów
0, 0, 0, 0, 0, 0, //nie specyfikuje bitów kolorów
0, //bez bufora alfa
0, //ignoruje bit przesuniecia
0, //bez bufora akumulacji
0, 0, 0, 0, //ignoruje bity akumulacji
16, //16-bitowy bufor Z
0, //bez bufora powielania
0, //bez buforów pomocniczych
PFD_MAIN_PLANE, //główna płaszczyzna rysowania
0, //zarezerwowane
0, 0, 0,}; //ignoruje maski warstw

//wybiera najodpowiedniejszy format pixeli
nPixelFormat = ChoosePixelFormat(hDC, &pfd);

//okresla format pixeli dla kontekstu urządzenia
SetPixelFormat(hDC, nPixelFormat, &pfd);
}

//////////////////////
procedura okinkowa
//////////////////////
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HGLRC hRC; //kontekst tworzenia grafiki
static HDC hDC; //kontekst urzadzenia
int width, height; //szerokosc i wysokos okna

switch(message)
{
case WM_CREATE: //okno jest tworzone
hDC = GetDC(hwnd); //pobiera kontekst urządzenia dla okna
g_HDC = hDC;
SetupPixelFormat(hDC); //wywołuje funkcję okreslająca format pixeli
//tworzy kontekst tworzenia grafiki i czyni go bieżącym
hRC = wglCreateContext(hDC);
wglMakeCurrent(hDC, hRC);
return 0;
break;

case WM_CLOSE: //okno jest zamykane
//dezaktywuje bieżący kontekst i usuwa go
wglMakeCurrent(hDC, NULL);
wglDeleteContext(hRC);
//wstaiwa komunikat WM_QUIT do kolejki
PostQuitMessage(0);
return 0;
break;

case WM_SIZE:
height = HIWORD(lParam); //pobiera nową wysokosc i szerokos okna
width = LOWORD(lParam);

if (height==0){height =1;}
//nadaje nowe wymiary oknu OpenGl
glViewport(0, 0, width, height);
//okresla macierz rzutowania
glMatrixMode(GL_PROJECTION);
//resetuje macierz rzutowania
glLoadIdentity();
//wyznacza proporcje obrazu
gluPerspective(45,(GLfloat)width/(GLfloat)height,1,1000);
glMatrixMode(GL_MODELVIEW); //okresla macierz widoku modelu
glLoadIdentity();
return 0;
break;

default:
break;
}

return (DefWindowProc(hwnd, message, wParam, lParam));
}

///////////////////////////////////////////////////////
punkt w którym rozpoczyna sie wykonwyanie aplikacji
///////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASSEX windowClass; //klasa okien
HWND hwnd; //uchwyt okna
MSG msg; //komunikat
bool done; //znacznik zakonczenia aplikacji

//definicja klasy okna
windowClass.cbSize= sizeof(WNDCLASSEX);
windowClass.style= CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc= WndProc;
windowClass.cbClsExtra= 0;
windowClass.cbWndExtra= 0;
windowClass.hInstance= hInstance;
windowClass.hIcon= LoadIcon(NULL, IDI_APPLICATION);//domyslna ikona
windowClass.hCursor= LoadCursor(NULL, IDC_ARROW); //domyslny kursor
windowClass.hbrBackground= NULL; //bez tła
windowClass.lpszMenuName= NULL; //bez menu
windowClass.lpszClassName= "Moja Klasa";
windowClass.hIconSm= LoadIcon(NULL, IDI_WINLOGO); //logo windows
//rejestruje klasę okna
if(!RegisterClassEx(&windowClass))
return 0;

//tworzy okno
hwnd = CreateWindowEx(NULL, //rozszerzony styl okna
"Moja Klasa", //nazwa klasy
"Aplikacja OpenGl", //nazwa aplikacji
WS_OVERLAPPEDWINDOW | WS_VISIBLE |
WS_SYSMENU | WS_CLIPCHILDREN|
WS_CLIPSIBLINGS, //styl
100, 100, //współrzędne x,y
600, 600, //szerokosc i wysokosc
NULL, //uchwyt okna nadrzędnego
NULL, //uchwyt menu
hInstance, //instancja aplikacji
NULL); //bez dodatkowych parametrów

//sprawdza czy utworzenie okna nie powiodło się w przeciwnym razie hwnd ma wartosc NULL
if (!hwnd)
return 0;

ShowWindow(hwnd, SW_SHOW); //wyswietla okno
UpdateWindow(hwnd); //aktualizuje onko
done=false; //inicjuje zmienna warunku wykonania pętli

//petla przetwarzania komunikatów
while(!done)
{
PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);
if (msg.message == WM_QUIT) //otrzymano komunikat WM_QUIT?
{
done = true;
}
else
{

/////////////////////////////////////
tworzy grafike///////////////////
zeruje bufor ekranu i bufor głębi
/////////////////////////////////////
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); //resetuje macierz widoku modelu

angle = angle+1.1f;
if (angle >=360)
angle =0.0f;
glTranslatef(0,0,-5);
glRotatef(angle,0,0,1);
glColor3f(1,0,0);
glBegin(GL_TRIANGLES);
glVertex3f(0,0,0);
glVertex3f(1,0,0);
glVertex3f(1,1,0);
glEnd();
SwapBuffers(g_HDC); //przełącza bufory
TranslateMessage(&msg); //tłumaczy komunikat i wysyła go do systemu
DispatchMessage(&msg);
}
}
return msg.wParam;
}

P.S. NIe wiem czy to ważne, ale kompilowałem to w Borland 6.0 ;/

Pozostało 580 znaków

2007-05-30 11:28

Rejestracja: 15 lat temu

Ostatnio: 3 lata temu

0

Jeśli chodzi o samo zapytanie to będzie tak :

int opcja = MessageBox(uchwyt, "Komunikat", "Pełny ekran?", MB_YESNO | MB_ICONQUESTION);

if(opcja == IDYES)
      // wywołujesz funkcję dającą pełen ekran
else if(opcja == IDNO)
     // zwykły ekran

---

Pozostało 580 znaków

2007-05-30 11:55

Rejestracja: 12 lat temu

Ostatnio: 11 lat temu

0

A ten..mógłbyś no dodać to kodu ;/ ;/ --> jesli to nie problem :(
Z góry dzieki

Pozostało 580 znaków

2007-05-30 14:38

Rejestracja: 15 lat temu

Ostatnio: 3 lata temu

0

A napisz mi proszę gdzie jest w kodzie funkcja odpowiedzialna za fullscreen ?

Jakoś połapać się nie mogę.

No chyba, że ta zmienna fullScreen decyduje o tym, tak więc :

int opcja = MessageBox(uchwyt, "Komunikat", "Pełny ekran?", MB_YESNO | MB_ICONQUESTION);

if(opcja == IDYES)
      fullScreen = true;// wywołujesz funkcję dającą pełen ekran
else if(opcja == IDNO)
     fullScreen = false;// zwykły ekran 

---

Pozostało 580 znaków

2007-05-30 14:56

Rejestracja: 12 lat temu

Ostatnio: 11 lat temu

0

Znaczy yyy.. w ogóle nie ma w tym kodzie funkcji FullScreen --> właśnie chciałem aby ją dodać do tego kodu ;/ --> ogormne sorki jesli źle na początku sie wyraziłem, ale to mój pierwszy post ;/ :(

Pozostało 580 znaków

2007-05-30 15:26

Rejestracja: 15 lat temu

Ostatnio: 3 lata temu

0

Oj, to będzie problem, nie wiem czy to zadziała, ale spróbuj :


#define WIN32_LEAN_AND_MEAN

/////////////////////
//Pliki nazgłówkowe//
/////////////////////
#include<windows.h>
#include<gl/gl.h>
#include<gl/glu.h>
#include<gl/glaux.h>

////////////////////
//Zmienne globalne//
////////////////////
bool fullScreen; //aplikacja rozpocznie sie w trybie pelnoekranowym
float angle=0.0f;
HDC g_HDC;              //kontekst urządzenia

int opcja = MessageBox(hwnd, "Komunikat", "Pełny ekran?", MB_YESNO | MB_ICONQUESTION);

if(opcja == IDYES)
      fullScreen = true;// wywołujesz funkcję dającą pełen ekran
else if(opcja == IDNO)
     fullScreen = false;// zwykły ekran  

///////////////////////////////////////////////////////////////
//funkcja okreslająca format pikseli dla kontekstu urządzenia//
///////////////////////////////////////////////////////////////
void SetupPixelFormat(HDC hDC)
{
int nPixelFormat;
static PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), //rozmiar struktury
1,                              //domyslna wersja
PFD_DRAW_TO_WINDOW|             //grafika w oknie
PFD_SUPPORT_OPENGL|             //grafika w Opengl
PFD_DOUBLEBUFFER,               //podwójne buforowanie
PFD_TYPE_RGBA,                  //tryb kolorów RGBA
32,                             //32-bitowy opsi kolorów
0, 0, 0, 0, 0, 0,               //nie specyfikuje bitów kolorów
0,                              //bez bufora alfa
0,                              //ignoruje bit przesuniecia
0,                              //bez bufora akumulacji
0, 0, 0, 0,                     //ignoruje bity akumulacji
16,                             //16-bitowy bufor Z
0,                              //bez bufora powielania
0,                              //bez buforów pomocniczych
PFD_MAIN_PLANE,                 //główna płaszczyzna rysowania
0,                              //zarezerwowane
0, 0, 0,};                      //ignoruje maski warstw

//wybiera najodpowiedniejszy format pixeli
nPixelFormat = ChoosePixelFormat(hDC, &pfd);

//okresla format pixeli dla kontekstu urządzenia
SetPixelFormat(hDC, nPixelFormat, &pfd);
}

//////////////////////
//procedura okinkowa//
//////////////////////
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HGLRC hRC;         //kontekst tworzenia grafiki
static HDC hDC;           //kontekst urzadzenia
int width, height;        //szerokosc i wysokos okna

switch(message)
{
case WM_CREATE:           //okno jest tworzone
hDC = GetDC(hwnd);        //pobiera kontekst urządzenia dla okna
g_HDC = hDC;
SetupPixelFormat(hDC);    //wywołuje funkcję okreslająca format pixeli
//tworzy kontekst tworzenia grafiki i czyni go bieżącym
hRC = wglCreateContext(hDC);
wglMakeCurrent(hDC, hRC);
return 0;
break;

case WM_CLOSE:            //okno jest zamykane
//dezaktywuje bieżący kontekst i usuwa go
wglMakeCurrent(hDC, NULL);
wglDeleteContext(hRC);
//wstaiwa komunikat WM_QUIT do kolejki
PostQuitMessage(0);
return 0;
break;

case WM_SIZE:
height = HIWORD(lParam);  //pobiera nową wysokosc i szerokos okna
width = LOWORD(lParam);

if (height==0){height =1;}
//nadaje nowe wymiary oknu  OpenGl
glViewport(0, 0, width, height);
//okresla macierz rzutowania
glMatrixMode(GL_PROJECTION);
//resetuje macierz rzutowania
glLoadIdentity();
//wyznacza proporcje obrazu
gluPerspective(45,(GLfloat)width/(GLfloat)height,1,1000);
glMatrixMode(GL_MODELVIEW); //okresla macierz widoku modelu
glLoadIdentity();
return 0;
break;

default:
break;
}

return (DefWindowProc(hwnd, message, wParam, lParam));
}

///////////////////////////////////////////////////////
//punkt w którym rozpoczyna sie wykonwyanie aplikacji//
///////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASSEX windowClass;    //klasa okien
HWND hwnd;                 //uchwyt okna
MSG msg;                   //komunikat
bool done;                 //znacznik zakonczenia aplikacji

//definicja klasy okna
windowClass.cbSize= sizeof(WNDCLASSEX);
windowClass.style= CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc= WndProc;
windowClass.cbClsExtra= 0;
windowClass.cbWndExtra= 0;
windowClass.hInstance= hInstance;
windowClass.hIcon= LoadIcon(NULL, IDI_APPLICATION);//domyslna ikona
windowClass.hCursor= LoadCursor(NULL, IDC_ARROW);  //domyslny kursor
windowClass.hbrBackground= NULL;                   //bez tła
windowClass.lpszMenuName= NULL;                    //bez menu
windowClass.lpszClassName= "Moja Klasa";
windowClass.hIconSm= LoadIcon(NULL, IDI_WINLOGO);  //logo windows
//rejestruje klasę okna
if(!RegisterClassEx(&windowClass))
return 0;

//tworzy okno
hwnd = CreateWindowEx(NULL,                          //rozszerzony styl okna
"Moja Klasa",                                      //nazwa klasy
"Aplikacja OpenGl",                                //nazwa aplikacji
WS_OVERLAPPEDWINDOW | WS_VISIBLE |
WS_SYSMENU | WS_CLIPCHILDREN|
WS_CLIPSIBLINGS,                                   //styl
100, 100,                                          //współrzędne x,y
600, 600,                                          //szerokosc i wysokosc
NULL,                                              //uchwyt okna nadrzędnego
NULL,                                              //uchwyt menu
hInstance,                                         //instancja aplikacji
NULL);                                             //bez dodatkowych parametrów

//sprawdza czy utworzenie okna nie powiodło się w przeciwnym razie hwnd ma wartosc NULL
if (!hwnd)
return 0;

if(fullScreen == true)
{
     ShowWindow(hwnd, SW_MAXIMIZE);                          //wyswietla okno
     UpdateWindow(hwnd);                                 //aktualizuje onko
}
else if(fullScreen == false)
{
     ShowWindow(hwnd, SW_SHOW);                          //wyswietla okno
     UpdateWindow(hwnd);                                 //aktualizuje onko
}
done=false;                                         //inicjuje zmienna warunku wykonania pętli

//petla przetwarzania komunikatów
while(!done)
{
PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);
if (msg.message == WM_QUIT)                         //otrzymano komunikat WM_QUIT?
{
done = true;
}
else
{

/////////////////////////////////////
//tworzy grafike/////////////////////
//zeruje bufor ekranu i bufor głębi//
/////////////////////////////////////
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();                                   //resetuje macierz widoku modelu

angle = angle+1.1f;
if (angle >=360)
angle =0.0f;
glTranslatef(0,0,-5);
glRotatef(angle,0,0,1);
glColor3f(1,0,0);
glBegin(GL_TRIANGLES);
glVertex3f(0,0,0);
glVertex3f(1,0,0);
glVertex3f(1,1,0);
glEnd();
SwapBuffers(g_HDC);                                 //przełącza bufory
TranslateMessage(&msg);                             //tłumaczy komunikat i wysyła go do systemu
DispatchMessage(&msg);
}
}
return msg.wParam;
}

---

Pozostało 580 znaków

2007-05-30 15:42

Rejestracja: 12 lat temu

Ostatnio: 11 lat temu

0

Znaczy jesli idzie o zapytanie czy włączyć fullscreen'a to nie --> to trzbea dać w innym miejscu, mianowicie tutaj: --> i powinno byc tak (żeby wyskoczyło):

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASSEX windowClass;    //klasa okien
HWND hwnd;                 //uchwyt okna
MSG msg;                   //komunikat
bool done;                 //znacznik zakonczenia aplikacji

if (MessageBox(NULL,"Włączyc FullScreen?", "Start FullScreen?",MB_YESNO|MB_ICONQUESTION) == IDNO)
{
fullScreen = false;
}

Jak daje to twoje zapytnie to nie wiem cos nie działa i w ogóle nie wiem po co trzeba dawac to if przed MessageBox --> bo bez niego nie wyskoczy :(

Pozostało 580 znaków

2007-05-30 15:57

Rejestracja: 15 lat temu

Ostatnio: 3 lata temu

0

Może tak się uda

Nie wiem czy zadziała bo siedze na Linuxie.

Tam gdzie jest ta duża przerwa w kodzie :) są linijki odpowiedzialne za pobranie rozmiaru i utworzenie okna

#define WIN32_LEAN_AND_MEAN

/////////////////////
//Pliki nazgłówkowe//
/////////////////////
#include<windows.h>
#include<gl/gl.h>
#include<gl/glu.h>
#include<gl/glaux.h>

////////////////////
//Zmienne globalne//
////////////////////
bool fullScreen = true; //aplikacja rozpocznie sie w trybie pelnoekranowym
float angle=0.0f;
HDC g_HDC;              //kontekst urządzenia

///////////////////////////////////////////////////////////////
//funkcja okreslająca format pikseli dla kontekstu urządzenia//
///////////////////////////////////////////////////////////////
void SetupPixelFormat(HDC hDC)
{
int nPixelFormat;
static PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), //rozmiar struktury
1,                              //domyslna wersja
PFD_DRAW_TO_WINDOW|             //grafika w oknie
PFD_SUPPORT_OPENGL|             //grafika w Opengl
PFD_DOUBLEBUFFER,               //podwójne buforowanie
PFD_TYPE_RGBA,                  //tryb kolorów RGBA
32,                             //32-bitowy opsi kolorów
0, 0, 0, 0, 0, 0,               //nie specyfikuje bitów kolorów
0,                              //bez bufora alfa
0,                              //ignoruje bit przesuniecia
0,                              //bez bufora akumulacji
0, 0, 0, 0,                     //ignoruje bity akumulacji
16,                             //16-bitowy bufor Z
0,                              //bez bufora powielania
0,                              //bez buforów pomocniczych
PFD_MAIN_PLANE,                 //główna płaszczyzna rysowania
0,                              //zarezerwowane
0, 0, 0,};                      //ignoruje maski warstw

//wybiera najodpowiedniejszy format pixeli
nPixelFormat = ChoosePixelFormat(hDC, &pfd);

//okresla format pixeli dla kontekstu urządzenia
SetPixelFormat(hDC, nPixelFormat, &pfd);
}

//////////////////////
//procedura okinkowa//
//////////////////////
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HGLRC hRC;         //kontekst tworzenia grafiki
static HDC hDC;           //kontekst urzadzenia
int width, height;        //szerokosc i wysokos okna

switch(message)
{
case WM_CREATE:           //okno jest tworzone
hDC = GetDC(hwnd);        //pobiera kontekst urządzenia dla okna
g_HDC = hDC;
SetupPixelFormat(hDC);    //wywołuje funkcję okreslająca format pixeli
//tworzy kontekst tworzenia grafiki i czyni go bieżącym
hRC = wglCreateContext(hDC);
wglMakeCurrent(hDC, hRC);
return 0;
break;

case WM_CLOSE:            //okno jest zamykane
//dezaktywuje bieżący kontekst i usuwa go
wglMakeCurrent(hDC, NULL);
wglDeleteContext(hRC);
//wstaiwa komunikat WM_QUIT do kolejki
PostQuitMessage(0);
return 0;
break;

case WM_SIZE:
height = HIWORD(lParam);  //pobiera nową wysokosc i szerokos okna
width = LOWORD(lParam);

if (height==0){height =1;}
//nadaje nowe wymiary oknu  OpenGl
glViewport(0, 0, width, height);
//okresla macierz rzutowania
glMatrixMode(GL_PROJECTION);
//resetuje macierz rzutowania
glLoadIdentity();
//wyznacza proporcje obrazu
gluPerspective(45,(GLfloat)width/(GLfloat)height,1,1000);
glMatrixMode(GL_MODELVIEW); //okresla macierz widoku modelu
glLoadIdentity();
return 0;
break;

default:
break;
}

return (DefWindowProc(hwnd, message, wParam, lParam));
}

///////////////////////////////////////////////////////
//punkt w którym rozpoczyna sie wykonwyanie aplikacji//
///////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASSEX windowClass;    //klasa okien
HWND hwnd;                 //uchwyt okna
MSG msg;                   //komunikat
bool done;                 //znacznik zakonczenia aplikacji

//definicja klasy okna
windowClass.cbSize= sizeof(WNDCLASSEX);
windowClass.style= CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc= WndProc;
windowClass.cbClsExtra= 0;
windowClass.cbWndExtra= 0;
windowClass.hInstance= hInstance;
windowClass.hIcon= LoadIcon(NULL, IDI_APPLICATION);//domyslna ikona
windowClass.hCursor= LoadCursor(NULL, IDC_ARROW);  //domyslny kursor
windowClass.hbrBackground= NULL;                   //bez tła
windowClass.lpszMenuName= NULL;                    //bez menu
windowClass.lpszClassName= "Moja Klasa";
windowClass.hIconSm= LoadIcon(NULL, IDI_WINLOGO);  //logo windows
//rejestruje klasę okna
if(!RegisterClassEx(&windowClass))
return 0;

// tutaj pobierzemy rozmiary ekranu

// width
int cx = GetSystemMetrics(SM_CXSCREEN);
// height
int cy = GetSystemMetrics(SM_CYSCREEN);

// i do hwnd odamy kolejno cx i cy

int opcja = MessageBox(uchwyt, "Komunikat", "Pełny ekran?", MB_YESNO | MB_ICONQUESTION);

if(opcja == IDYES)
{
    //tworzy okno
    hwnd = CreateWindowEx(NULL,                          //rozszerzony styl okna
    "Moja Klasa",                                      //nazwa klasy
    "Aplikacja OpenGl",                                //nazwa aplikacji
    WS_OVERLAPPEDWINDOW | WS_VISIBLE |
    WS_SYSMENU | WS_CLIPCHILDREN|
    WS_CLIPSIBLINGS,                                   //styl
    0, 0,                                          //współrzędne x,y
    cx, cy,                                          //szerokosc i wysokosc
    NULL,                                              //uchwyt okna nadrzędnego
    NULL,                                              //uchwyt menu
    hInstance,                                         //instancja aplikacji
    NULL);     

}
else if(opcja == IDNO)
{
    //tworzy okno
    hwnd = CreateWindowEx(NULL,                          //rozszerzony styl okna
    "Moja Klasa",                                      //nazwa klasy
    "Aplikacja OpenGl",                                //nazwa aplikacji
    WS_OVERLAPPEDWINDOW | WS_VISIBLE |
    WS_SYSMENU | WS_CLIPCHILDREN|
    WS_CLIPSIBLINGS,                                   //styl
    100, 100,                                          //współrzędne x,y
    600, 600,                                          //szerokosc i wysokosc
    NULL,                                              //uchwyt okna nadrzędnego
    NULL,                                              //uchwyt menu
    hInstance,                                         //instancja aplikacji
    NULL);     

}

                                        //bez dodatkowych parametrów

//sprawdza czy utworzenie okna nie powiodło się w przeciwnym razie hwnd ma wartosc NULL
if (!hwnd)
return 0;

ShowWindow(hwnd, SW_SHOW);                          //wyswietla okno
UpdateWindow(hwnd);                                 //aktualizuje onko
done=false;                                         //inicjuje zmienna warunku wykonania pętli

//petla przetwarzania komunikatów
while(!done)
{
PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);
if (msg.message == WM_QUIT)                         //otrzymano komunikat WM_QUIT?
{
done = true;
}
else
{

/////////////////////////////////////
//tworzy grafike/////////////////////
//zeruje bufor ekranu i bufor głębi//
/////////////////////////////////////
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();                                   //resetuje macierz widoku modelu

angle = angle+1.1f;
if (angle >=360)
angle =0.0f;
glTranslatef(0,0,-5);
glRotatef(angle,0,0,1);
glColor3f(1,0,0);
glBegin(GL_TRIANGLES);
glVertex3f(0,0,0);
glVertex3f(1,0,0);
glVertex3f(1,1,0);
glEnd();
SwapBuffers(g_HDC);                                 //przełącza bufory
TranslateMessage(&msg);                             //tłumaczy komunikat i wysyła go do systemu
DispatchMessage(&msg);
}
}
return msg.wParam;
}

---

Pozostało 580 znaków

2007-05-30 16:05

Rejestracja: 12 lat temu

Ostatnio: 11 lat temu

0

Kur.cze --> pisze że nie zna takiego słowa jak "uchwyt" :( --> w tym poleceniu:

int opcja = MessageBox(uchwyt, "Komunikat", "Pełny ekran?", MB_YESNO | MB_ICONQUESTION);

Pozostało 580 znaków

2007-05-30 16:06

Rejestracja: 15 lat temu

Ostatnio: 3 lata temu

0

moja wina :)

uchwyt tak sobie nazwałem, zmień na hwnd


---

Pozostało 580 znaków

2007-05-30 16:16

Rejestracja: 12 lat temu

Ostatnio: 11 lat temu

0

hehe :) --> tylko no działa tylko nic sie nie pokazuje... ;/ tak jakby okna nie chciał zrobić :( ;/

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0