Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Jeded Vojka 06. 07. 2018, 10:18:48
-
Proč se mi nezruší to pero?
void KresliKostku (int x, int y, int ink)
{
hPen=CreatePen(PS_SOLID | PS_INSIDEFRAME,1, ink);
hPen = (HPEN) SelectObject (hdcMem, hPen);
GetClientRect(hWnd, &block);
Rectangle(hdcMem, x,y,x+4,y+4);
SelectObject(hdcMem,hPen);
DeleteObject(hPen);
}
-
SelectObject: If the selected object is not a region and the function succeeds, the return value is a handle to the object being replaced
rusite tedy ten puvodni handle, ktery je nejspis nejaky systemovy.
void KresliKostku (int x, int y, int ink)
{
hPen=CreatePen(PS_SOLID | PS_INSIDEFRAME,1, ink);
hOldPen = (HPEN) SelectObject (hdcMem, hPen);
GetClientRect(hWnd, &block);
Rectangle(hdcMem, x,y,x+4,y+4);
SelectObject(hdcMem,hOldPen);
DeleteObject(hPen);
}
-
Alebo len
...
Rectangle(...
hPen = SelectObject(...
DeleteObject(hPen);
-
Alebo len
...
Rectangle(...
hPen = SelectObject(...
DeleteObject(hPen);
Alebo len "DeleteObject(SelectObject(...));", to je jeste min nazorne :-). A nahore by slo optimalizovat Create a SelectObj. S trochou snahy by to slo mozna jeste pomoci operatoru carka cele dat do jednoho statementu v nejake if forme ;-o
-
Alebo len
...
Rectangle(...
hPen = SelectObject(...
DeleteObject(hPen);
I když řešení se swapnutím je chytré a pěkné, to předchozí je čitelnější.
-
mhi_ : dík moc.
Funguje to.
Od včerejška jsem studoval dvě knihy (R.Chalupa Visual C++ a Ch. Petzold progr. ve WinAPI), ale stejně nejlepší je rychlá odpověď od někoho zkušeného.
:)
-
Neni zac. GDI a USER funkce Win API, ale obecne i vetsina NT kernelu nejsou az zase tak blbe navrzene, jak si spousta lidi od Linuxu mysli. Problem je v tom, ze na relativne dobry navrh se zacaly cpat ruzne hacky. treba jak je resene DPIAwareness ve Win7-Win10 je desive.
IBM (OS/2) a MS (NT/Win16) tehdy nabrali docela slusne mozky, existuje nekolik clanku insideru (resp. primo autoru), kde ten vyvoj popisuji. Nemaji treba problem priznat, ze v OS/2 zvolili blbe koordinaty a u Win to "opravili".
-
Neni zac. GDI a USER funkce Win API, ale obecne i vetsina NT kernelu nejsou az zase tak blbe navrzene, jak si spousta lidi od Linuxu mysli. Problem je v tom, ze na relativne dobry navrh se zacaly cpat ruzne hacky. treba jak je resene DPIAwareness ve Win7-Win10 je desive.
No, nutno rict, ze DPI awareness a jeho ekvivalentny jsou resene hruzostrasne v cele rade API. Asi nejlepe resene me to prislo v GTK.
-
A v těch knihách je to taky takhle blbě a ty nevíš k čemu je přiřazení, že ti to nepřijde divné? To by ses asi měl držet něčeho jednoduššího.