Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Dare focus a finestre
Forum - C/C++ - Dare focus a finestre

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Ciccioo (Normal User)
Rookie


Messaggi: 21
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 19:15
Martedì, 28/04/2009
salve a tutti,
sto scrivendo un piccolo programma/esercizio in cui ho bisogno di passare il focus dalla mia finestra ad un'altra finestra, per la precisione quella che sta dopo la mia nello "Z order", in pratica quella che ha avuto il focus per penultima.
ho provato così:

Codice sorgente - presumibilmente Plain Text

  1. SetWindowPos(GetNextWindow(hwndDlg,GW_HWNDNEXT),HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);



questo codice, però mi porta semplicemente in primo piano la finestra, senza darle il focus.
cerca,cerca su internet ho rimediato un codice più o meno così:

Codice sorgente - presumibilmente Plain Text

  1. HWND hMenu=GetNextWindow(hwndDlg,GW_HWNDNEXT);             AttachThreadInput(GetCurrentThreadId(),GetWindowThreadProcessId(hMenu,NULL),true);
  2. SetFocus(hMenu); AttachThreadInput(GetCurrentThreadId(),GetWindowThreadProcessId(hMenu,NULL),false);



quest'ultimo codice proprio non fa niente, nessun effetto.
come devo fare?
grazie

Ultima modifica effettuata da Ciccioo il 28/04/2009 alle 19:17
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:25
Martedì, 28/04/2009
usa la SetFocus(hwnd)

con hwnd che è l'handle della finestra alla quale vuoi dare il focus


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
Ciccioo (Normal User)
Rookie


Messaggi: 21
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 20:20
Martedì, 28/04/2009
quello l'ho già provato nel secondo "tentativo"
su msdn dice che "The window must be attached to the calling thread's message queue."
le altre due funzioni che lo accompagnano servono appunto a questo, ma per un qualche motivo non funziona

PM Quote
Avatar
Ciccioo (Normal User)
Rookie


Messaggi: 21
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 20:24
Martedì, 28/04/2009
scusate, doppio post

Ultima modifica effettuata da Ciccioo il 28/04/2009 alle 20:26
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 20:52
Martedì, 28/04/2009
usa SetWindowPos come l'hai messa nel primo tentativo
e dopo quella metti SetFocus con l'handle della finestra che hai appena posto in primo piano

Ultima modifica effettuata da lorenzo il 28/04/2009 alle 20:53


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
Ciccioo (Normal User)
Rookie


Messaggi: 21
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 21:02
Martedì, 28/04/2009
non funziona.
passa in primo piano ma non gli dà il focus

nessuna idea?

Ultima modifica effettuata da Ciccioo il 30/04/2009 alle 21:55
PM Quote
Avatar
Ciccioo (Normal User)
Rookie


Messaggi: 21
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 18:11
Sabato, 02/05/2009
credo di avere trovato l'errore...
se io per esempio metto nel codice una cosa come
Codice sorgente - presumibilmente Plain Text

  1. HWND hMenu;
  2. hMenu=GetNextWindow(hwndDlg,GW_HWNDNEXT);
  3. SetWindowText(hMenu,"banana");


non mi cambia il testo della finestra che stà dietro, quindi credo che il problema sia che la funzione GetNextWindow() non mi restituisce l'handle correttamente.
quindi ho provato con
Codice sorgente - presumibilmente Plain Text

  1. hMenu=GetWindow(hwndDlg,GW_HWNDNEXT);
  2. SetWindowText(hMenu,"banana");



ma niente... boh che mi dite?

PM Quote
Avatar
Ciccioo (Normal User)
Rookie


Messaggi: 21
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 10:08
Giovedì, 28/05/2009
uno alla volta non vi accalcate

PM Quote
Avatar
Daniele93 (Normal User)
Expert


Messaggi: 226
Iscritto: 29/05/2009

Segnala al moderatore
Postato alle 19:21
Venerdì, 29/05/2009
Ciao ciccio!!! heheh... io direi che si può fare csi: *à°#!ì^""-ç@
Tu che dici... haha
:cheer::cheer:

nnt ci vediamo domani a scuola!
il tuo affezzionato vicino di banco

p.s. se nn funzia il # prova con *


Si vis pacem, para bellum

Se vuoi la pace, prepara la guerra.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo