Favicon Svethardware.cz  Svět hardware   Fórum Favicon Svetaudia.cz  Svět audia Favicon TVFreak.cz  TV Freak   Fórum Favicon Digimanie.cz  Digimanie   Fórum   Galerie Společnost oXy Online s.r.o.
Zobrazené výsledky: 1 až 4 z 4

Téma: Začínám s WinAPI - problém s úpravou textu v textboxu

  1. #1
    Pravidelný diskutér
    Registrace
    Mar 2007
    Příspěvků
    230

    Zdravím,

    rozhodl jsem se přejít z .NETu na nativní kód (důvody snad psát nemusím, programátoři by jistě vymysleli mnohem víc důvodů než já), bohužel už řeším zdánlivě nevyřešitelné...
    Jako zkoušku jsem si řekl, že zkusím naprogramovat nějakou kalkulačku. Vykreslení prvků je bezproblémové, problém však nastává po stisknutí tlačítka s číslem. Po stisku by se měla vzít hodnota textboxu, k ní by se měl přidat znak číslice a to celé by se mělo zapsat zpět do textboxu. Problém je, že ihned po spuštění aplikace spadne. Přikládám problémový kód (bez něj aplikace nespadne):
    Kód:
    static LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    	TCHAR chText[100];
    	TCHAR chText2[100];
    	switch (msg)
    	{
    	case WM_COMMAND:
    		// Problémový kód BEGIN
    		if ( lParam == (LPARAM) g_but1 )
    		{
    			GetWindowText(g_text1,chText2,100); // Získání textu
    			_stprintf(chText, L"%s1", chText2); // Přidání číslice 1 za text
    			SetWindowText(g_text1,chText); // Vložení zpět do textboxu
    		}
    		// Problémový kód END
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	case WM_QUIT:
    		PostQuitMessage(0);
    		break;
    	}
    	return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    Původně byl problém v řádku
    Kód:
    _stprintf(chText, L"%s1", chText2);
    Bez toho L před stringem mi kompilátor hlásí chybu
    Kód:
    Type error in argument 2 to 'swprintf'; expected 'const wchar_t *' but found 'char *'.
    O přidání Lka jsem se dočetl zde, s Lkem se program zkompiluje bez chyby, ovšem padá.

    Upozorňuji, že s WinAPI začínám a zatím dost tápu. Chápu, že pro někoho je toto banalita, pro mě je to však velký problém, který jsem zatím ani s Googlem nevyřešil

    Předem děkuji všem

    EDIT: Používám Pelles C

    EDIT2:
    Nový postřeh - zkusil jsem spustit tu padající verzi, okno se vykreslilo i se všemi prvky, podařilo se mi rychle (před spadnutím) tapnout na tlačítko 1 a výsledek je ten, že se stalo přesně to, co mělo - do textboxu se přidala jednička... zvláštní
    Odpovídat lze po přihlášení

  2. #2
    Starousedlík SMob
    Registrace
    Jan 2004
    Příspěvků
    2,017

    Dobrý den,
    hlavní problém bude v tom, že vám chybí příkaz break. Takže přejdete do další sekce CASE, kde si pošlete QUIT message.
    V C++ musí být každá sekce case ukončena příkazem break, jinak projdete všemi sekcemi ncase příkazu switch, které následují po první vyhovující (splňující podmínku) sekci case.
    Jedna z "oblíbených" chyb v C++, V C# musíte s výjimkou prázdných sekcí CASE říci, co chcete udělat (break, goto case x).

    Kód:
    case WM_COMMAND:
    {
    // Problémový kód BEGIN
    if ( lParam == (LPARAM) g_but1 )
    {
    GetWindowText(g_text1,chText2,100); // Získání textu
    _stprintf(chText, L"%s1", chText2); // Přidání číslice 1 za text
    SetWindowText(g_text1,chText); // Vložení zpět do textboxu
    }
    break;
    }
    Odpovídat lze po přihlášení



  3. #3
    Pravidelný diskutér
    Registrace
    Mar 2007
    Příspěvků
    230

    teď by se mi hodil smajlík chytající se za hlavu čekal jsem banalitu, ale až takovou fakt ne.. přiznávám, že tohle byla skutečně blbost, na kterou jsem mohl přijít sám :-D díky moc
    Odpovídat lze po přihlášení

  4. #4
    Nováček
    Registrace
    Feb 2007
    Příspěvků
    11

    Pro tento případ doporučuji knihu Windows Api (jsou tam snad všechny možné i nemožné postupy), akorát v programu PelesC jsem měl problémy s češtinou.
    Odpovídat lze po přihlášení

Podobná témata

  1. editace textu
    Od virago666 v sekci eKnihy
    Reakcí: 6
    Poslední příspěvek: 28-03-2008, 13:54
  2. help pro winapi
    Od bluefox1 v sekci Programování
    Reakcí: 3
    Poslední příspěvek: 16-04-2007, 13:16
  3. Převod textu
    Od Chiquita_CZ v sekci Zbývající zařízení Asus
    Reakcí: 3
    Poslední příspěvek: 17-11-2006, 09:35
  4. Rozpoznávání textu
    Od henzy v sekci Zbývající zařízení Asus
    Reakcí: 6
    Poslední příspěvek: 02-10-2006, 08:16
  5. Odkazy v textu
    Od Reddy v sekci Provoz FÓRA
    Reakcí: 5
    Poslední příspěvek: 16-02-2005, 12:07