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

Barva textu na tlačítku - Winapi – C / C++ – Fórum – Programujte.comBarva textu na tlačítku - Winapi – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
ProXicT0
Návštěvník
2. 4. 2014   #1
-
0
-

Zdravím, chtěl bych změnit barvu textu na tlačítku. Barvu pozadí, okrajů, zaoblení atd. mám, ale s bervou textu si nevím rady. Mám toto: 

case WM_NCHITTEST:
{
	static HBRUSH NewBrush = NULL;
	LPNMHDR xlParam = (LPNMHDR)lParam;
	LPNMCUSTOMDRAW clParam = (LPNMCUSTOMDRAW)lParam;

	if(xlParam->hwndFrom == Button_Apply && xlParam->code == NM_CUSTOMDRAW)
	{
		if(NewBrush == NULL)
		NewBrush = CreateSolidBrush(RGB(200, 0, 0));
		HPEN pen = CreatePen(PS_INSIDEFRAME, 0, RGB(200, 0, 0));
		HGDIOBJ old_pen = SelectObject(clParam->hdc, pen);
		HGDIOBJ old_brush = SelectObject(clParam->hdc, NewBrush);
		RoundRect(clParam->hdc, clParam->rc.left, clParam->rc.top, clParam->rc.right, clParam->rc.bottom, 0, 0);

		SelectObject(clParam->hdc, old_pen);
		SelectObject(clParam->hdc, old_brush);
		DeleteObject(pen);
		NewBrush = NULL;
	}
}
break;

Takto obarvím tlačítko, ale text se mi nepovedlo zatím nijak změnit. Předem díky za rady :-)

Nahlásit jako SPAM
IP: 77.240.98.–
Radek Chalupa
~ Redaktor
+1
Super člen
3. 4. 2014   #2
-
0
-
Nahlásit jako SPAM
IP: 89.177.51.–
ProXicT0
Návštěvník
3. 4. 2014   #3
-
0
-

#2 Radek Chalupa
Kamkoliv dám SetTextColor(), nikdy to nemá žádný efekt.

if(defaultbrush == NULL)
	defaultbrush = CreateSolidBrush(RGB(200, 0, 0));

HPEN pen = CreatePen(PS_INSIDEFRAME, 0, RGB(200, 0, 0));
HGDIOBJ old_pen = SelectObject(clParam->hdc, pen);
HGDIOBJ old_brush = SelectObject(clParam->hdc, defaultbrush);

FillRect(clParam->hdc, &clParam->rc, 0);
SetTextColor(clParam->hdc, RGB(255, 255, 255)); // Nic nedělá

SelectObject(clParam->hdc, old_pen);
SelectObject(clParam->hdc, old_brush);
DeleteObject(pen);
defaultbrush = NULL;

V kódu nahoře nemám zprávu WM_NCHITTEST, ale WM_NOTIFY, včera jsem to psal narychlo, tak jsem se přepsal...Ale SetTextColor mi nefunguje v žádném případě..

Nahlásit jako SPAM
IP: 77.240.98.–
Řešení
Radek Chalupa
~ Redaktor
+1
Super člen
3. 4. 2014   #4
-
0
-
Vyřešeno Nejlepší odpověď

#3 ProXicT
Button tohle nepodporuje, resp. částečně v XPčkách. Na tohle se používá jak už jsem zmínil obsluha WM_DRAWITEM (dostane ji rodičovské okno buttonu). Tam dostaneš v té struktuře HDC do kterého si můžeš kreslit cokoliv dle libosti. Viz. článek výše.

Radek Chalupa 
- individuální konzultace, školení programování (C/C++, WinAPI, COM, ActiveX, ATL, C#, NET Framework, MFC) 
- vývoj software na zakázku 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
ProXicT0
Návštěvník
3. 4. 2014   #5
-
0
-

#4 Radek Chalupa
Aha, tak to jsem nevědel, super, díky moc :)

Nahlásit jako SPAM
IP: 77.240.98.–
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, 72 hostů

Podobná vlákna

Barva pozadi a textu — založil Ladík

Barva určitého textu — založil Melamber777

WinApi - překreslení textu — založil General

WinApi Menu chyba textu — založil Kenvelo

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ý