» »

c++: MessageBox in (ne)brisanje okna z njim

c++: MessageBox in (ne)brisanje okna z njim

Bela01 ::

Lep pozdrav!

Pri geometriji pišem program o presečišču dveh daljic in bi ga rada še malo dodelala.
Problem pa je sledeč:
Ko se ti pojavi MessageBox in če ga premikaš po oknu lahko z njim "radiraš" okno na katerem so narisane daljice. Zanima me kako to preprečit oz. kako ob vsakem premiku tega Mess. okna sprožit funkcijo, ki bo to vse na novo narisala? Rada bi tudi, da mi to nariše v barvah, če je predhodno program narisal kaj barvno. Dobro ampak to več ni glavni problem. Rada bi samo vedla ime funkcije (če ta obstaja), ki se sproži ob premiku messageBoxa oz. kak to napisat, če te funkcije ni.

LP, Ina

user4683 ::

V katerem jeziku to?

Na splošno bi šlo tko, da ob eventu premikanja tega messageboxa invalidateaš pač tisto kontrolo v kateri rišeš daljico.

Quikee ::

Ce se vedno uporabljate MFC(Document/View).. tak kot smo ga mi pri geometriji potem se vse funkcije risanja morajo izvajat v OnDraw() metodi. Ta metoda se klice vedno ce sliko kaj prekriva ali ce sliki recimo spremenis velikost oz. vse kaj potrebuje delno ali celotno prenovo narisanega.. ponovno risanje pa seveda moras sama implementirat v tej metodi, ce tega ze nisi v kateri drugi metodi.

Drugace bolj smiselna resitev v tem primeru bi bila implementacija double bufferinga na View ampak pomoje v tem primeru to ni niti zahtevano niti potrebno.

Bela01 ::

snake: v c++ (razvidno iz naslova

quikee: OnDraw funkcije sploh nisem uporabljala. Sicer pa ni problem bom pa tja klicala tam ko rišem. Torej bi naj ta funkcija vsakokrat ko se messagebox prestavi ponovno gor narisala?
Kak pa gre ona druga zadeva ko si jo napiso? A lahko malo razložiš?

Quikee ::

Da OnDraw() se klice vedno v taksnem primeru.. ti mors v tej metodi ali klicat kero drugo metodo ali pa v tej metodi izvajat funkcije za risanje. Ce hoces pa, da se sprozi OnDraw() metoda kje drugje v programu pa klici Invalidate();

Double buffering pa ni drugi nacin risanja ampak v bistvu nadgradnja tega.. samo to tak vrjetno ne rabis v tvojem primeru (jaz vsaj nisem). Vrjetno bos pa rabla pri katerih vajah v visjem letniku.

Bela01 ::

Za silo mi je uspelo. S funkcijo OnDraw. V njo sem dala sedaj vse kar se tiče risanja. V glavnem v drugih funkcijah kjer jo potrebujem oz. mi mora nekaj izrisat na ekrat pokličem direktno OnDraw. Zdaj pa je nastal problem. Jaz bi rada, da ko kliknem novo okno oz. ko kliknem na MessageBox, da se mi okno izbriše. Hm kak pa zdaj to, ker slika mi namreč kljub temu ostaja gor, pa čeprav mam nastavljeno tak, da ko kliknem na ikono novo okno, da bi se mi naj izbrisalo.

Bela01 ::

Sem narobe napisala ne ko kliknem na MessageBox ampak ko kliknem na ok na MessageBoxu, da se mi takrat potem izbriše okno, da lahko grem na novo delat.

Bela01 ::

Hm imam idejo samo ne vem kje to naret. Namreč v OnDraw funkciji imam nareto tako, da če imam barve nastavljene na črno, da mi ne barva nič (z if stavki). Torej bi lahko nekje naredila tako, da če kliknem ok na messageboxu oz. kliknem novo okno da dam vse barve na 0. Ok če kliknem na novo okno dam vse barve na nič v funkciji OnFileNew. Kaj pa če kliknem ok na messageboxu?

Bela01 ::

Ok vse dela :)

Itak da se ob kliko na ok pokliče OnFileNew. Torej zadeva dela zdaj.

Hvala za pomoč.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Android] pomoč pri postavitvi layouta

Oddelek: Programiranje
122208 (1966) icurk
»

Android zamenjava pogledov

Oddelek: Programiranje
61077 (898) c00L3r
»

android črta

Oddelek: Programiranje
412398 (1669) g333kk
»

mfc problem

Oddelek: Programiranje
161641 (1205) FuI2cY
»

Program v c++

Oddelek: Programiranje
192011 (1680) Bela01

Več podobnih tem