WinApi - překreslení textu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

WinApi - překreslení textu – C / C++ – Fórum – Programujte.comWinApi - překreslení textu – C / C++ – Fórum – Programujte.com

 

General0
Návštěvník
23. 2. 2011   #1
-
0
-

Teprve se učim WinApi a mam problém. Vykreslim text funkcí TextOut() text na obrazovku, po chvilce ho potřebuju přepsat a v tom je problém - potřebuju ho zaměnit za jinej text. Jakym způsobem se teda překreslí znova jen to jedno místo?

Jinak vykresluju to takhle..

	hdc = BeginPaint(hWnd, &ps);

SetBkMode(hdc, TRANSPARENT);
char x[10];
x = "aaa";
TextOut(hdc, 100, 100, (LPCSTR)x, lstrlen((LPCSTR)x));
EndPaint(hWnd, &ps);

Nahlásit jako SPAM
IP: 89.102.78.–
m->29+6
Super člen
23. 2. 2011   #2
-
0
-

Stačí ak zmeníš text a ono sa to prekreslí samo. Ak by ti tam niečo zostávalo z predchádzajúceho textu tak treba vymazať aj pozadie.

Nahlásit jako SPAM
IP: 83.240.51.–
General0
Návštěvník
23. 2. 2011   #3
-
0
-

Jak to mam v tom případě udělat? Když zavolam znova TextOut() tak se mi to překreslí tak že to new bude nad tim starym a jinak mi to nejde když nepoužíju TextOut().

Nahlásit jako SPAM
IP: 89.102.78.–
m->29+6
Super člen
23. 2. 2011   #4
-
0
-

Vypisuješ len hodnotu premennej x, tak ak tú premennú zmeníš tak sa vypíše zase to zmenené.

Nahlásit jako SPAM
IP: 83.240.51.–
General0
Návštěvník
24. 2. 2011   #5
-
0
-

Nejde, opravdu nidko neví? Kód zatim vypadá takhle..

hdc = BeginPaint(hWnd, &ps);

char x[10]; strcpy(x, "a"); // x = a
LOGFONT logfont;
HFONT font;

GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(logfont), &logfont);
logfont.lfHeight = 25;
SetBkMode(hdc, TRANSPARENT); //pozadí je průhledný, když neni tak se to překreslí
lstrcpy(logfont.lfFaceName, _T("Arial"));
font = CreateFontIndirect(&logfont);
SelectObject(hdc, font);
//vypíšu
TextOut(hdc, 20, 100, (LPCSTR)x, strlen((LPCSTR)x));
//změnim hodnotu
strcpy(x, "b"); // x = b
/*************/
//tak když tam bude tohle znova nakreslí se to na to předešlý, místo aby to smazalo i původní
TextOut(hdc, 20, 100, (LPCSTR)x, strlen((LPCSTR)x));
/*************/
MessageBox(hWnd, (LPCSTR)x, NULL, 0); //opravdu je změněná x
EndPaint(hWnd, &ps);

Nahlásit jako SPAM
IP: 89.102.76.–
nervak0
Věrný člen
24. 2. 2011   #6
-
0
-

Odpověď už jsi dostal, musíš překreslit i pozadí.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 58 hostů

Podobná vlákna

Winapi překreslení — založil boom

WinApi Menu chyba textu — založil Kenvelo

Kreslení a překreslení — založil Johnn195

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý