Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

hotkay i cpp i izvrsni kod

[es] :: C/C++ programiranje :: hotkay i cpp i izvrsni kod

[ Pregleda: 2276 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.xnet.hr.



Profil

icon hotkay i cpp i izvrsni kod17.03.2006. u 08:24 - pre 220 meseci
Kako najjednostavnije aktivirati hotkey i kada ga se pritisne da on izvrsi neki kod .bio bi zahvalan na nekom kodu . ( Do sada mi niko nikada nije odgovorio niti na jedno pitanje ???? )

[Ovu poruku je menjao Neznalica_sa_ugla dana 17.03.2006. u 09:26 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.3dnet.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: hotkay i cpp i izvrsni kod17.03.2006. u 09:22 - pre 220 meseci
Sta podrazumevas pod HotKey, odnosno opisi scenario da se 'nesto' pokrene?

Da li si mislio da kada tvoja aplikacija nije aktivna, tj fokusirana, pritisnes
neku kombnaciju tastera, npr Alt+nest koja izvrsava neki kod, ili si mislio na
nesto sasvim drugo.

Na primer pogledaj:
RegisterHotKey()
http://msdn.microsoft.com/libr...0/html/cerefRegisterHotKey.asp


ili

jos bolje resenje bi bilo sa takozvanim Global Keyboard Hook mehanizmom, koji
podrazumeva poseban DLL koji vrsi monitorinj tastature.
 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.xnet.hr.



Profil

icon Re: hotkay i cpp i izvrsni kod17.03.2006. u 09:37 - pre 220 meseci
Ma gledao i to dugo , nije bilo koristi . Ovako sam zamislio : recimo imate prozor u njemu nekoliko kontrola : textedit, listbox, kada ste u edit kontroli i kucate tekst ,ali ako pritisnete strelicu prema dolje da vam se izvrši neki kod ( ponude opcije , skoci u drugi edit , napise neka poruka o vašemu unesenom tekstu .... ) sve zavisi sta radi taj dio koda koji se pokrece kada pritisnete taj botun , napominjem kada ste u kontroli edit da "regularno " ne napušta kontrola ,nego morate kliknuti mišom , ( ovdje mis otpada) to treba obaviti tastaturom. itd...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.3dnet.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: hotkay i cpp i izvrsni kod17.03.2006. u 09:45 - pre 220 meseci
To vec nije posao za HotKey niti za GlobalKeyboardHook()

Radi se o obicnim dogadjajima vezanim za tastaturu: OnKeyDown, OnKeyUp,
OnKeyPress, i sl... i utoliko je sve lakse.

E sad koji IDE/komajler koristis pa da ti neko da kod.

 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.xnet.hr.



Profil

icon Re: hotkay i cpp i izvrsni kod17.03.2006. u 10:00 - pre 220 meseci
radim u cpp , platforma SDK i ( koliko ja znam ne mogu se obradjivati takvi dog. ako mogu ,kao??? )
obradjujem samo poruke WM_KEYPRESS , WM_KEYUP ... ALI NJIH Prozor ne prosljedjuje kada ste u kontroli , zato mislim da bi bilo rjesenje hotkey da taj kod se izvrsi pa u njemu raditi sta reba ( program mije prevelik za slanje )
 
Odgovor na temu

stargazer
bgd

Član broj: 85916
Poruke: 117
*.eunet.yu.



Profil

icon Re: hotkay i cpp i izvrsni kod17.03.2006. u 11:02 - pre 220 meseci
ako sam dobro shvatio čoveka, njemu edit kontrola ne prosleđuje WM_KEY* poruke u glavni prozor, pa mu je to problem
i ne može da ih obradi

taj problem možeš da rešiš pomoću Subclassing-a, pa da direktno obrađuješ poruke te kontrole bez obzira na prozor u kome se kontrola nalazila

pošalji program

[Ovu poruku je menjao stargazer dana 18.03.2006. u 02:15 GMT+1]
With no lovin' in our souls and no money in our coats you can't say we're satisfied
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: hotkay i cpp i izvrsni kod17.03.2006. u 18:57 - pre 220 meseci
Kursori se bez problema hvataju u TEdit komponenti kod BCB-a:
(miclim da bi i kod M$-a trebalo da bude isto)

na primer, za gore:
Code:

void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if ( Key == VK_UP )
      ShowMessage( "Gore" );        
}


Ali koliko se secam hvatanje TAB-a je problematicno, ali se i to resava, npr:
Code:


--- H ---

    private:  // User declarations
        void __fastcall AppMessage( TMsg &Msg, bool &Handled );
    public:   // User declarations
        __fastcall ~TForm1();

--- CPP ---

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
    Application->OnMessage = AppMessage;
}
__fastcall TForm1::~TForm1()
{
    Application->OnMessage = NULL;
}
void __fastcall TForm1::AppMessage( TMsg &Msg, bool &Handled )
{
    if ( Msg.message == WM_KEYDOWN || Msg.message == WM_KEYUP )
    {
        if ( Msg.wParam == VK_TAB )
        {
           if ( dynamic_cast<TEdit*>( Screen->Active->Control ) )
           {
              Msg.wParam = VK_RETURN;
           }
        }
    }
}

 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.xnet.hr.



Profil

icon Re: hotkay i cpp i izvrsni kod18.03.2006. u 13:54 - pre 220 meseci
Hvala X-file na trudu , ali to mi ne rjesava problem. Ako mogu na eki e-mail da ti spremim dio koda da pogledas, onda bi bilo jasno o cemu se radi. Ovako ne ide . No svjedno jos jednom hvala na trudu.
 
Odgovor na temu

stargazer
bgd

Član broj: 85916
Poruke: 117
*.eunet.yu.



Profil

icon Re: hotkay i cpp i izvrsni kod18.03.2006. u 22:13 - pre 220 meseci
video sam šta si pravio u onome što si poslao i koliko sam video, sve je manje više u redu
rešenje za tvoj problem je Subclassing ( podklasovanje ), zamena originalne procedure prozora sa nekom sopstvenom:

e sad, koliko sam video treba ti za EDIT kontrolu, pa ću ovde da navedem za nju, ali opšti princip i dalje važi za ostale, s time što za neke kontrola treba pogledati i dokumentaciju - npr. COMBOBOX u zavisnosti od stila, šalje WM_KEYDOWN poruku svojoj listi koja je njen podređeni prozor ( CBS_DROPDOWNLIST ), a u ostalim slučajevima ( CBS_DROPDOWN i CBS_SIMPLE ) svojoj podređenoj edit kontroli, tako da treba u stvari podklasovati odgovarajuću podređenu kontrolu

evo kako to izgleda :

po pozivu funkcije CreateWindowEx za prozor (hEditWnd ) koji se želi podklasovati, potrebno je pozvati funkciju SetWindowLong na sledeći način :

Code:

OldWndProc = (WNDPROC)SetWindowLong(hEditWnd, GWL_WNDPROC, (LONG)NewWndProc);


gde je OldWndProc promenljiva tipa WNDPROC, a NewWndProc :

Code:

// ovde je stavljeno da se pri pritisku na ENTER menja fokus kontrole

LRESULT CALLBACK NewWndProc(HWND hEditWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
   if (Msg == WM_KEYDOWN)
       if ((int)wParam == VK_ENTER)
       {
           SetFocus(hNaredniEditWnd);
           return 0;
       }

   return CallWndProc(OldWndProc, hEditWnd, Msg, wParam, lParam);
}

...

// i pre poziva DestroyWindow za podklasovani prozor :
SetWindowLong(hEditWnd, GWL_WNDPROC, (LONG)OldWndProc);
DestroyWindow(hEditWnd);



Dakle, u suštini ti samo presrećeš poruke upućene ovom prozoru i šalješ i na defaultno procesiranje u OldWndProc pozivom CallWndProc.

Na ovaj način se bilo koji prozor može podklasovati.



[Ovu poruku je menjao stargazer dana 18.03.2006. u 23:18 GMT+1]
With no lovin' in our souls and no money in our coats you can't say we're satisfied
 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.xnet.hr.



Profil

icon Re: hotkay i cpp i izvrsni kod20.03.2006. u 11:38 - pre 220 meseci
Hvala stargazer , ovo mi doista pomaze , nisam jos sve implementirao ,ali cini mi se da ce biti ok!!
 
Odgovor na temu

[es] :: C/C++ programiranje :: hotkay i cpp i izvrsni kod

[ Pregleda: 2276 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.