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);
Citace od: juloj kdy 06. 07. 2018, 11:04:57
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
Citace od: juloj kdy 06. 07. 2018, 11:04:57
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".
Citace od: mhi_ kdy 06. 07. 2018, 11:47:03
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.