funkcja ta ma zwrócić mapę typu row1, row2, lub row3 (row4 to tylko zmienna zdeklarowana, na wypadek jesli wcisniemy zly klawisz)
row1 itd zawieraja klawisz i dźwięk (klasa to_speaker).
map<char, to_speaker > bito_blaster::gdzieTenKlawisz(char key){
string tablica[3] = { "QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM" };
if( tablica[0].find(key) < tablica[0].length() ){
tekst->SetLabel("zwracam rząd 1 ");
czy_dostepny = true;
return row1;
}
else if( tablica[1].find(key) < tablica[1].length()){
tekst->SetLabel("zwracam rząd 2 ");
czy_dostepny = true;
return row2;
}
else if( tablica[2].find(key) < tablica[2].length()){
tekst->SetLabel("zwracam rząd 3 ");
czy_dostepny = true;
return row3;
}
else{
tekst->SetLabel("UWAZAJ TEN KLAWISZ NIE JEST DOSTĘPNY !!! " );
czy_dostepny = false;
return row4;
}
}
w innym miejscu programu w tej samej klasie napisałem funkcję, która jest podłączona z naciśnięciem klawisza .
void bito_blaster::onKeyDown(wxKeyEvent& event)
{
map< char, to_speaker > rowX = gdzieTenKlawisz( event.GetUnicodeKey() );
rowX [ event.GetUnicodeKey() ].playIt();
}
Funkcja działa o tyle wadliwie, że odtwarza tylko dźwięki z row1, naciskajac klawisz z row2 lub 3 widać, że "gdzieTenKlawisz" zwraca row2 lub 3, bo ustawiłem w tej funkcji informacje do logowania jak widzicie. Natomiast odtwarzają się tylko klawisze z row1.
Jeśli w onKeyDown wpisałem row2[ event....].playIt() to grało mi normalnie dźwięki z row2.
Co robię źle?