Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Editboxin kanssa ongelmaa

Liquid_Vision [19.10.2004 20:15:10]

#

Eli pitäis saada semmonen ominaisuus ohjelmaan että kun kirjotetaan editboxiin jotain ja sitten painetaan entteriä niin sitten tapahtuu jokin toiminto, minun tapauksessani pitäisi piirtää näytölle. Mutta kun focus on editboxilla niin viestit eivät pääse sanomasilmukasta ikkunaproseduuriin. Vaikka ottaisin focuksen pois editboxilta, siltikään viestit eivät pääse läpi.. Enkä käytä MFC:tä.

Tässä vielä omat yritykseni:

//sanomasilmukka

    while (GetMessage (&msg, NULL, 0, 0))
    {
        if(msg.message == WM_KEYDOWN && msg.wParam == 13)
        {
            WndProc(msg.hwnd, msg.message, msg.wParam, msg.lParam);
        }
        else
        {
            TranslateMessage (&msg);
            DispatchMessage (&msg);
        }
    }

//WM_KEYDOWN viestin käsittely

   case WM_KEYDOWN:
    if(wParam == VK_RETURN)
    {
    SetFocus(hwnd);
    PostMessage(hwnd, WM_COMMAND, LOWORD(wParam) = 103, 0);
    return 0;
    }
    break;

Tuolla WM_COMMANDissa sitten piirretään ja tehdään muut jutut.

Ideoita?

Metabolix [19.10.2004 21:43:49]

#

Hassu messagelooppi... Translate ja Dispatch suorittavat kyllä sen WndProcin. Vai käytätkö useampaa eri WndProcia?

En ole koskaan noita Windowsin bokseja käyttänyt, mutta auttaisiko, jos tekisit messageloopin PeekMessagella?

while (true)
{
  while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
  {
    // Tänne tuo "if .. then .. else"
  }
}

Sitten vielä ihmettelen, voiko tuo toimia:
PostMessage(hwnd, WM_COMMAND, LOWORD(wParam) = 103, 0);

LOWORD on makro, ja muutenkaan ei minusta voi tuollaiseen laittaa = -merkkiä, varsinkaan, kun vasemmalla on makro. Miten olisi tämä:
PostMessage(hwnd, WM_COMMAND, 103, 0);

Vai pitikö tuossa alun perinkin olla:
PostMessage(hwnd, WM_COMMAND, LOWORD(wParam) == 13, 0);

Liquid_Vision [24.10.2004 16:40:54]

#

Tuossa sinun messageloopissa ohjelmaa ei voi enää sulkea, eli ilmeisesti WM_QUIT-vistiä ei noteerata, ja toisekseen Entterin painallus ei toiminut. :/

Liquid_Vision [25.10.2004 18:34:03]

#

Muita ehdotuksia..?

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta