visual c++ long press

Programovacie jazyky, rady, poradňa...
johny29
Medium Star
Medium Star
Príspevky: 304
Registrovaný: 09 mar 2011, 21:07

visual c++ long press

Príspevok od používateľa johny29 »

Zdravim,
Mam nieco taketo, ze pri kliknuti na tlacidlo sa mi zvyssi hodnota

Kód: Vybrať všetko

private: System::Void UP_Click(System::Object^  sender, System::EventArgs^  e) {
			g++;
ale potrebujem aby sa zvysovala automaticky pri drzani tlacidla. Existuje na to nejaka funkcia alebo akym sposobom to mam riesit?
Dakujem
aacid
Hardcore addict
Hardcore addict
Príspevky: 8137
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: visual c++ long press

Príspevok od používateľa aacid »

priznam sa v c++ nerobim, ale ak to spravne chapem, ten event UP_Click za zaregistruje, ked tlacidlo pustis, mal by existovat aj DOWN_Click, ktory sa zaregistruje ked tlacidlo stlacis.
potom si budes vediet zistit presne ci je tlacidlo stlacene alebo nie je a teda vies zvysovat hodnotu v pravidelnych intervaloch.

no ale mozno sa uplne mylim a niekto ti to vysvetli lepsie.
skkiller2
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 95
Registrovaný: 06 dec 2008, 11:23
Kontaktovať používateľa:

Re: visual c++ long press

Príspevok od používateľa skkiller2 »

Presne tak zachytavat eventy down/up(tam nastavovat premennu button_down). Ja by som to riesil vo vlastnom threade
Metoda run:

Kód: Vybrať všetko

while(running){
    if(button_down)
        g++;
    Thread::sleep(interval);
}
johny29
Medium Star
Medium Star
Príspevky: 304
Registrovaný: 09 mar 2011, 21:07

Re: visual c++ long press

Príspevok od používateľa johny29 »

vyriesil som to pomocou timer-u

Ked budem mat 10 takychto buttonov tak potrebujem vytvorit 10x tolko eventov alebo staci jeden s premennou?
skkiller2
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 95
Registrovaný: 06 dec 2008, 11:23
Kontaktovať používateľa:

Re: visual c++ long press

Príspevok od používateľa skkiller2 »

Sikovny s timerom je to este jednoduchsie.
Na kazdy button zavesit up/down a asi budes musiet mat 10 premennych pre zistenie stavu kazdeho buttonu(ibaze by ten button mal nejaky atribut pomocou ktoreho by sa dal zistit stav ale neviem akurat som pozeral msdn a nic take som nenasiel).

Edit:
inspiracia http://stackoverflow.com/questions/1255 ... dows-forms

na kazdy button zavesit button_MouseUp a button_MouseDown
Mouse_Down:

Kód: Vybrať všetko

private: System::Void button_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
        set_push(sender, true);
    }
Mouse_up:

Kód: Vybrať všetko

private: System::Void button_MouseUp(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
        set_push(sender, false);
    }
set_push:

Kód: Vybrať všetko

private: System::Void set_push(System::Object^ sender, bool pushed){
        button1_down = ((sender == button1) && pushed);
        button2_down = ((sender == button2) && pushed);
    }
a timer:

Kód: Vybrať všetko

private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
        if (button1_down)
        {
            // stlaceny button1
            g++;
        }
        if (button2_down)
        {
            // stlaceny button2
        }
    }
johny29
Medium Star
Medium Star
Príspevky: 304
Registrovaný: 09 mar 2011, 21:07

Re: visual c++ long press

Príspevok od používateľa johny29 »

perfektne, dakujem. to celkom skrati kod, kedze mam 14 tlacidiel a vyriesi mi to zrejme dalsi problem :)

Este taka technicka otazka mam form1.h kde su buttony,atd.. a mam tam #include xxx.h(kde mam premenne a funkcie)
A ak potrebujem v tom xxx.h nieco napisat do textboxu vo form1.h je to mozne?(alebo by som to nemal pliest)
skkiller2
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 95
Registrovaný: 06 dec 2008, 11:23
Kontaktovať používateľa:

Re: visual c++ long press

Príspevok od používateľa skkiller2 »

V tom xxx mas len cisto premenne a funkcie alebo su zabalene do triedy?
Ak nie su v triede tak to smrdi spatnym navrhom :)
Ak su v triede tak tu triedu niekde instanciujes, pokial nemas vsetko staticke :| . Pravdepodobne by to malo byt vo Form1.
a v form1 mozes na ten objekt volat metody(s navratovym typom napr. String ktory mozes napisat do textboxu),
alebo len vytvorit public property v XXX(kde ju aj nastavujes) a tu potom vo form1 citat,
alebo prasacka moznost v xxx si vytvoris "funkciu" s argumentom textbox a s nim v tej funkcii mozes robit co chces :nono: .
Je viacero sposobov, zalezi od pozadovanej funkcionality.
johny29
Medium Star
Medium Star
Príspevky: 304
Registrovaný: 09 mar 2011, 21:07

Re: visual c++ long press

Príspevok od používateľa johny29 »

Zdravim, Po dlshom case opat potrebujem pomoct.
Subory
  • main.cpp
    reader.h
    reader.cpp
    Form1.h
V reader mam triedu POHYBY a este funkciu fill(vector<Pohyby>&)

Ak v main vytvorim vector objektov a zavolam funkciu

Kód: Vybrať všetko

vector<Pohyby> mymoves;
fillVector(mymoves);
Tak vsetko funguje(do mymoves sa zapisu hodnoty)

Ale ak to spravim vo Form1, tak vo funkcii sa vector(newMyMoves) pekne vyplni ,ale vo form1(mymoves) ako keby ukazoval niekde inde.
hned na zaciatku vytvorim vector
a tu volam funkciu fill():

Kód: Vybrať všetko

public ref class Form1 : public System::Windows::Forms::Form
	{
	
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Add the constructor code here
			//
			findPorts();
			fillVector(mymoves);
			
		}
Takto to vyzera pri debug
Prílohy
funkcia.jpg
form1.jpg
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8222
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: visual c++ long press

Príspevok od používateľa harrison314 »

Nemylte si C++ a C++/CLI.

Inak nevidim ziaden zmysel robit v C++/CLI desktopove aplikacie. C++/CLI je urceny na tvorbu kniznic pre .Net systemy, najme v pripadoch ked sa vyuziva C/C++ api, alebo sa treba hrat vo velkom s manazovanou pametou.
johny29
Medium Star
Medium Star
Príspevky: 304
Registrovaný: 09 mar 2011, 21:07

Re: visual c++ long press

Príspevok od používateľa johny29 »

je to posledna cast programu, tak to nebudem teraz cele prepisovat.

Potrebujem nacitat zo subory hodnoty a zobrazit ich v aplikacii, a potrebujem s tymi hodnotami aj pracovat.
Ale nenapada ma ziadne rozumne riesenie ako to zrealizovat
vstup vyzera nejak takto, kazdy programX ma maticu nx5

Kód: Vybrať všetko

# program1
4 5 6 7 8
1 7 4 6 7
5 7 9 2 1
2 4 5 6 7
# program2
9 2 4 3 4
2 1 4 1 3
# program3
...
Ak v aplikacii zvolim jeden z programov, tak sa zobrazi jeho matica
Napísať odpoveď