Druhý Richedit má nechtěný rámeček win32 – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Druhý Richedit má nechtěný rámeček win32 – C / C++ – Fórum – Programujte.comDruhý Richedit má nechtěný rámeček win32 – 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
1. 12. 2014   #1
-
0
-

Dobrý den,
mám richedit, který mám z knihovny Msftedit.dll. První richedit se mi vytvoří v pořádku, ale když vytvořím druhý, tak má podivný rámeček, který nechci. 

Připojen obrázek.

LoadLibrary("Msftedit.dll");
	RichEdit = CreateWindow("RICHEDIT50W", "", ES_READONLY | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP, 5, 370, 600, 300, hwnd, NULL, NULL, NULL);
	RichEdit2 = CreateWindow("RICHEDIT50W", "",/*0x550081C4*/ES_MULTILINE | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP, 610, 65, 600, 300, hwnd, NULL, NULL, NULL);

Zkoušel jsem i pomocí Spy++ zjistit styl prvního richeditu a hex. hodnotu dát do druhého, i tak ale skončím u richeditu s rámečkem.
Rámeček připomíná styl WS_EX_CLIENTEDGE.
Zkoušel jsem také uvolnit knihovnu a znovu jí nahrát.
Předem díky za Váš čas!

Nahlásit jako SPAM
IP: 77.240.98.–
Řešení
ProXicT0
Návštěvník
1. 12. 2014   #2
-
0
-
Vyřešeno Nejlepší odpověď

Tak jsem tomu přišel na kloub. Nevím proč, ale ten druhý RichEdit nějakým záhadným způsobem opravdu získává extended style WS_EX_CLIENTEDGE. 
Hned po vytvoření ho tedy mažu takto:

LONG lExStyle = GetWindowLong(RichEdit2, GWL_EXSTYLE);
lExStyle &= ~WS_EX_CLIENTEDGE;
SetWindowLong(RichEdit2, GWL_EXSTYLE, lExStyle);

Je mi vážně záhadou, kde se tam ten EX_STYLE bere.

Nahlásit jako SPAM
IP: 77.240.98.–
Radek Chalupa
~ Redaktor
+1
Super člen
2. 12. 2014   #3
-
0
-

#2 ProXicT
Řekl bych že je to výchozí vlastnost editu/richeditu, pokud není read-only (a to ten první je proto to má jen ten druhý). A protože ve fci CreateWindow ex-styl nezadáváš, použije zmíněný výchozí. Měla by to řešit fce CreateWindowEx, kde můžeš zadat ex-styl jako 0 a pak by neměl mít ten rámeček hned při vytvoření.

Radek Chalupa
- individuální konzultace a školení programování (C/C++, C#, WinAPI, COM, ATL, ActiveX, 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
2. 12. 2014   #4
-
0
-

#3 Radek Chalupa
Děkuji za odezvu.
Zkoušel jsem i funkci CreateWindowEx() a do ex. style jsem dal parametr NULL.
Zároveň jsem měl přímo styl, získaný pomocí Spy++, nastavený do druhého RichEditu, tudíž oba RichEdity měly stejné styly. Takže tím to určitě není. Když prohodím pořadí RichEditů, vždy ten druhý získá styl WS_EX_CLIENTEDGE.

Nahlásit jako SPAM
IP: 188.175.191.–
Radek Chalupa
~ Redaktor
+1
Super člen
2. 12. 2014   #5
-
0
-

#4 ProXicT
Pak může být problém v tom, že oba (jako dětská okna) mají stejné ID a to nulu - je to parametr hmenu fce CreateWindow, který u dětských oken představuje právě jeho ID, které by mělo být jedinečné (samozřejmě pouze v rámci jednoho rodičovského okna, nikoliv celé aplikace).

Radek Chalupa
- individuální konzultace a školení programování (C/C++, C#, WinAPI, COM, ATL, ActiveX, 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
2. 12. 2014   #6
-
0
-

#5 Radek Chalupa
I na to jsem myslel, tím to také není...zkoušel jsem tomu druhému dát ID 40001 - (HMENU)40001

Nahlásit jako SPAM
IP: 188.175.191.–
ProXicT0
Návštěvník
2. 12. 2014   #7
-
0
-

#5 Radek Chalupa
Ani moc nevím, k čemu ta ID jsou, na všechno používám handly. ID jsem už dlouho nikde nepoužil. Je vůbec nějaká možnost, kde se použití ID nevyhnu?

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, 42 hostů

Podobná vlákna

Nechtěný rámeček — založil aratok

Intro (Nechtěný objekt) — založil Kedar_CZ

Rámeček kolem komponenty — založil bronek

RichEdit — založil Danstahr

RichEdit — založil massic

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ý