Oppure

Loading
28/04/09 17:15
Ciccioo
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ì:

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ì:

HWND hMenu=GetNextWindow(hwndDlg,GW_HWNDNEXT);             AttachThreadInput(GetCurrentThreadId(),GetWindowThreadProcessId(hMenu,NULL),true);
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 28/04/09 17:17
aaa
28/04/09 17:25
lorenzo
usa la SetFocus(hwnd)

con hwnd che è l'handle della finestra alla quale vuoi dare il focus
aaa
28/04/09 18:20
Ciccioo
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
aaa
28/04/09 18:24
Ciccioo
scusate, doppio post
Ultima modifica effettuata da Ciccioo 28/04/09 18:26
aaa
28/04/09 18:52
lorenzo
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 28/04/09 18:53
aaa
28/04/09 19:02
Ciccioo
non funziona.
passa in primo piano ma non gli dà il focus

nessuna idea?
Ultima modifica effettuata da Ciccioo 30/04/09 19:55
aaa
02/05/09 16:11
Ciccioo
credo di avere trovato l'errore...
se io per esempio metto nel codice una cosa come
HWND hMenu;
hMenu=GetNextWindow(hwndDlg,GW_HWNDNEXT);
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
hMenu=GetWindow(hwndDlg,GW_HWNDNEXT);
SetWindowText(hMenu,"banana");


ma niente... boh che mi dite?
aaa
28/05/09 8:08
Ciccioo
uno alla volta non vi accalcate
aaa