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

WinApi Menu chyba textu – C / C++ – Fórum – Programujte.comWinApi Menu chyba textu – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Kenvelo+2
Super člen
22. 3. 2014   #1
-
0
-

Zdravím při vložení textu pro název výběrového menu mi vyhodí tuto chybu

WinApi se teprve učím takže vůbec netuším co s tím.

Připojen obrázek.

Předem díky za pomoc.

Nahlásit jako SPAM
IP: 89.177.219.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Radek Chalupa
~ Redaktor
+1
Super člen
22. 3. 2014   #2
-
0
-

#1 Kenvelo
Podle všeho kompiluješ pro Unicode (defaultní ve VS), takže textové konstanty musíš uvádět L"nějaký text", popř. univerzální (i pro ANSI) _T("nějaký text");

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

Nahlásit jako SPAM
IP: 89.177.51.–
Kenvelo+2
Super člen
22. 3. 2014   #3
-
0
-

#2 Radek Chalupa
Můžu poprosit po případně nějaký příklad ?

Nahlásit jako SPAM
IP: 89.177.219.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Radek Chalupa
~ Redaktor
+1
Super člen
22. 3. 2014   #4
-
0
-

#3 Kenvelo
Vždyť jsem to už napsal, prostě místo "Setting" tam má být L"Setting"

A to se týká samozřejmě všech textových konstant v programu:-)

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

Nahlásit jako SPAM
IP: 89.177.51.–
Kenvelo+2
Super člen
22. 3. 2014   #5
-
0
-

#4 Radek Chalupa
Jo super =] Děkuji. 

Nahlásit jako SPAM
IP: 89.177.219.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Matherz0
Newbie
22. 3. 2014   #6
-
+1
-
Zajímavé

V nastavení VS si můžeš změnit kodování, abys nemusel před řetezce uvádět

Func(L"Whatever");
Func( (LPCSTR) "Whatever"); // Ekvivalent


Ale to bych asi nedoporučoval, a něchal bych ansi kvůli českému jazyku.

Nahlásit jako SPAM
IP: 212.96.160.–
Radek Chalupa
~ Redaktor
+1
Super člen
23. 3. 2014   #7
-
0
-

#6 Matherz
Snad naopak, ne?:-) V MS Visual C++ je defaultní (minimálně už od verze 2008) unicode, takže by mělo být "nechat unicode".

A obávám se že ty 2 řádky ekvivalentní nejsou. Pokud ta funkce Func má/očekává jako parametr textovou konstantu v unicode tj. něco jako Func(const wchar_t* txt), pak ten 2. řádek vyhodí chybu kompilátoru a to přetypování na tom nic nezmění, resp. nemá žádný smysl, protože "LPCSTR" není nic jiného než "const char*" a text v uvozovkách (bez jakékoliv dekorace před ním) představuje právě pointr na (konstantní) řetezec ansi znaků, tj. const char*.

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

Nahlásit jako SPAM
IP: 89.177.51.–
Kenvelo+2
Super člen
23. 3. 2014   #8
-
0
-

#7 Radek Chalupa
Ještě sem narazil na jednu věc. Jak vlastně vypsat číselnou proměnnou ? 

Když napíši  

int velikostX = 100;
MessageBox(hWnd, L"Velikost X",(LPCWSTR)velikostX, MB_ICONINFORMATION);

Tak mi to vlastně nevypíše

Nahlásit jako SPAM
IP: 89.177.219.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Radek Chalupa
~ Redaktor
+1
Super člen
23. 3. 2014   #9
-
0
-

#8 Kenvelo
Předpokládám že tím jsi program shodil, ten MessageBox se sápal na adresu 100 a tam ho systém nepustí a program spadne, nebo by měl spadnout:-).

Je to jednoduché, samotné číslo např. pomocí _itow:

 wchar_t* txt[50];
 _itow(cislo, txt, 10);

Nebo i s textem

StringCbPrintf(txt, sizeof(txt), L"Velikost: %d", cislo);

A v MessageBoxu použiješ txt.

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

 

Nahlásit jako SPAM
IP: 89.177.51.–
Kenvelo+2
Super člen
23. 3. 2014   #10
-
0
-

#9 Radek Chalupa
Ne program nespadl,pokud už bylo definovaná hodnota proměnné ale když sem hodnotu chtěl přepsat přímo v běhu tak teprve program spadl. Díky za radu ;)

Nahlásit jako SPAM
IP: 89.177.219.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
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, 15 hostů

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ý