Rysowanie chodzi wam o SDL_Flip() ??
Zauważyłem jedną ciekawą rzecz - że kiedy okno WinAPI jest włączone żadna kontrolka wtedy nie działa. Ale chyba on zapamiętuję trasę myszki (nie umiem tego wyjaśnić!) i po zamknięciu okna stara się ją odtworzyć. tutaj zarzucam funkcję:
int settings_tapeta(int x, int y)
{
/*
CHANGEABLE
*/
fstream pliczek((char*)"./temp/wallpaper.tmp",ios::in);
apperance_options temp;
{
temp = main_apperance;
}
char przyklad[18];
SDL_Event event;
SDL_Surface *tekst;
bool quit = false;
clear_place(x + 170, y + 83);
/*
CREATE BUTTONS AND OTHERS
*/
button anuluj(x + 10, y + 410,"Anuluj",ICON,"./images/system/icons/stop_mini.png");
button potwierdz(x + 340, y + 410,"Potwierdz",ICON,"./images/system/icons/info_mini.png");
button reset(x + 240, y + 410,"Resetuj",ICON,"./images/system/icons/warning_mini.png");
button otworz(x + 300, y + 340,"Wybierz...",NO_ICON);
choose_box tapeta(x + 170, y + 60,"Tapeta");
choose_box styl(x + 250, y + 60,"Styl");
//
choose_true_false pierwszy(x + 350,y + 140,"");
choose_true_false drugi(x + 400,y + 140,"");
choose_true_false trzeci(x + 350,y + 180,"");
choose_true_false czwarty(x + 400,y + 180,"");
choose_true_false piaty(x + 375,y + 160,"");
//
multibox_button tapeta1(x + 170,y + 130,"We like peppers"," ",START);
multibox_button tapeta2(x + 170,y + 160,"Kubuntu ring"," ");
multibox_button tapeta3(x + 170,y + 190,"Egsistence"," ");
multibox_button tapeta4(x + 170,y + 220,"Binar"," ",END);
//
multibox_button silnik(x + 10,y + 60,"Silnik","./images/system/icons/gear.png",START);
multibox_button ekrann(x + 10,y + 90,"Ekran","./images/system/icons/desktop.png");
multibox_button dzwiek(x + 10,y + 150,"Dzwiek","./images/system/icons/sound.png");
multibox_button bezpieczenstwo(x + 10,y + 180,"Bezpieczenstwo","./images/system/icons/security.png");
multibox_button inne(x + 10,y + 210,"Inne","./images/system/icons/ok.png");
multibox_button clear2(x + 10,y + 240," "," ");
multibox_button clear31(x + 10,y + 270," "," ");
multibox_button clear32(x + 10,y + 300," "," ");
multibox_button clear33(x + 10,y + 330," "," ");
multibox_button clear4(x + 10,y + 360," "," ", END);
insert_box blabla(x + 170,y + 300);
//
tekst = TTF_RenderUTF8_Solid(big_antykwa, (char*)"Tapeta:", kolor_czarny);
load_surface(x + 170, y + 80,tekst,ekran);
tekst = TTF_RenderUTF8_Solid(antykwa, (char*)"Dostępne tapety:", kolor_czarny);
load_surface(x + 170, y + 110,tekst,ekran);
tekst = TTF_RenderUTF8_Solid(antykwa, (char*)"Położenie:", kolor_czarny);
load_surface(x + 370, y + 110,tekst,ekran);
tekst = TTF_RenderUTF8_Solid(antykwa, (char*)"Wybierz inną tapetę:", kolor_czarny);
load_surface(x + 170, y + 340,tekst,ekran);
switch(temp.wallpaper_location)
{
case 0:
{
if(pierwszy.true_false_events(x + 351, y + 141,true)) pierwszy.show();
pierwszy.pressed = true;
drugi.pressed = false;
trzeci.pressed = false;
czwarty.pressed = false;
piaty.pressed = false;
}
case 1:
{
if(drugi.true_false_events(x + 401, y + 141,true)) drugi.show();
pierwszy.pressed = false;
drugi.pressed = true;
trzeci.pressed = false;
czwarty.pressed = false;
piaty.pressed = false;
}
case 2:
{
if(trzeci.true_false_events(x + 351, y + 181,true)) trzeci.show();
pierwszy.pressed = false;
drugi.pressed = false;
trzeci.pressed = true;
czwarty.pressed = false;
piaty.pressed = false;
}
case 3:
{
if(czwarty.true_false_events(x + 401, y + 181,true)) czwarty.show();
pierwszy.pressed = false;
drugi.pressed = false;
trzeci.pressed = false;
czwarty.pressed = true;
piaty.pressed = false;
}
case 4:
{
if(piaty.true_false_events(x + 376, y + 161,true)) piaty.show();
pierwszy.pressed = false;
drugi.pressed = false;
trzeci.pressed = false;
czwarty.pressed = false;
piaty.pressed = true;
}
}
SDL_Flip(ekran);
while(quit != true)
{
while(SDL_PollEvent(&event))
{
pressed = false;
if( event.type == SDL_MOUSEMOTION )
{
mouse_x = event.motion.x;
mouse_y = event.motion.y;
}
if( event.type == SDL_MOUSEBUTTONDOWN )
{
if( event.button.button == SDL_BUTTON_LEFT )
{
pressed = true;
}
else pressed = false;
}
/*
BUTTONS REACTIONS
*/
if(anuluj.button_events(mouse_x, mouse_y,pressed)) anuluj.show();
if(potwierdz.button_events(mouse_x, mouse_y,pressed)) potwierdz.show();
if(reset.button_events(mouse_x, mouse_y,pressed)) reset.show();
if(otworz.button_events(mouse_x, mouse_y,pressed)) otworz.show();
if(tapeta.box_events(mouse_x, mouse_y,pressed)) tapeta.show();
if(tapeta.pressed);
if(styl.box_events(mouse_x, mouse_y,pressed)) styl.show();
if(styl.pressed)
{
check_and_drop_ap(temp,x,y);
return STYLE;
}
if(silnik.multibox_button_events(mouse_x, mouse_y,pressed)) silnik.show();
if(silnik.pressed)
{
check_and_drop_ap(temp,x,y);
return ENGINE;
}
if(ekrann.multibox_button_events(mouse_x, mouse_y,pressed)) ekrann.show();
if(ekrann.pressed)
{
check_and_drop_ap(temp,x,y);
return WINDOW;
}
if(dzwiek.multibox_button_events(mouse_x, mouse_y,pressed)) dzwiek.show();
if(dzwiek.pressed)
{
check_and_drop_ap(temp,x,y);
return SOUNDS;
}
if(bezpieczenstwo.multibox_button_events(mouse_x, mouse_y,pressed)) bezpieczenstwo.show();
if(bezpieczenstwo.pressed)
{
check_and_drop_ap(temp,x,y);
return SECURITY;
}
if(inne.multibox_button_events(mouse_x, mouse_y,pressed)) inne.show();
if(inne.pressed)
{
check_and_drop_ap(temp,x,y);
return OTHER;
}
if(anuluj.pressed)
{
check_and_drop_ap(temp,x,y);
return 100;
}
if(potwierdz.pressed)
{
save_options_ap(temp);
return 101;
}
/*
*/
if(pierwszy.true_false_events(mouse_x, mouse_y,pressed)) pierwszy.show();
if(pierwszy.pressed)
{
drugi.pressed = false;
trzeci.pressed = false;
czwarty.pressed = false;
piaty.pressed = false;
pierwszy.show();
drugi.show();
trzeci.show();
czwarty.show();
piaty.show();
temp.wallpaper_location = 0;
}
if(drugi.true_false_events(mouse_x, mouse_y,pressed)) drugi.show();
if(drugi.pressed)
{
pierwszy.pressed = false;
trzeci.pressed = false;
czwarty.pressed = false;
piaty.pressed = false;
pierwszy.show();
drugi.show();
trzeci.show();
czwarty.show();
piaty.show();
temp.wallpaper_location = 1;
}
if(trzeci.true_false_events(mouse_x, mouse_y,pressed)) trzeci.show();
if(trzeci.pressed)
{
pierwszy.pressed = false;
drugi.pressed = false;
czwarty.pressed = false;
piaty.pressed = false;
pierwszy.show();
drugi.show();
trzeci.show();
czwarty.show();
piaty.show();
temp.wallpaper_location = 2;
}
if(czwarty.true_false_events(mouse_x, mouse_y,pressed)) czwarty.show();
if(czwarty.pressed)
{
pierwszy.pressed = false;
drugi.pressed = false;
trzeci.pressed = false;
piaty.pressed = false;
pierwszy.show();
drugi.show();
trzeci.show();
czwarty.show();
piaty.show();
temp.wallpaper_location = 3;
}
if(piaty.true_false_events(mouse_x, mouse_y,pressed)) piaty.show();
if(piaty.pressed)
{
pierwszy.pressed = false;
drugi.pressed = false;
trzeci.pressed = false;
czwarty.pressed = false;
pierwszy.show();
drugi.show();
trzeci.show();
czwarty.show();
piaty.show();
temp.wallpaper_location = 4;
}
/*
*/
if(blabla.insert_events(mouse_x, mouse_y,pressed,przyklad)) blabla.show();
if(tapeta1.multibox_button_events(mouse_x, mouse_y,pressed)) tapeta1.show();
if(tapeta1.pressed)
{
strcpy(temp.wallpaper,"./images/system/we_likes_pepper.png");
tapeta1.pressed = false;
}
if(tapeta2.multibox_button_events(mouse_x, mouse_y,pressed)) tapeta2.show();
if(tapeta2.pressed)
{
strcpy(temp.wallpaper,"./images/system/kubuntu_ring.jpg");
tapeta2.pressed = false;
}
if(tapeta3.multibox_button_events(mouse_x, mouse_y,pressed)) tapeta3.show();
if(tapeta3.pressed)
{
tapeta3.pressed = false;
}
if(tapeta4.multibox_button_events(mouse_x, mouse_y,pressed)) tapeta4.show();
if(tapeta4.pressed)
{
tapeta4.pressed = false;
}
if(otworz.button_events(mouse_x, mouse_y,pressed)) otworz.show();
if(otworz.pressed)
{
while(window_open_image((HINSTANCE)1,NULL," ",0))
{
mouse_x = 100;
mouse_y = 100;
}
otworz.pressed = false;
}
}
}
}
Aha i teraz spróbowałem dać funkcję tego okna ("Otwórz jako") w pętli, która zeruje wartości myszki, ale kiszka....
Z góry dzięks za pomoc
Z góry dzięki za pomoc