PDA

View Full Version : [c] Focus finestra


Rsk
31-07-2009, 17:45
Ragazzi sto realizzando un programma che invia degli input ad una finestra che può non avere il focus.

Dato che sono un noob per quanto riguarda le api win32 sapreste aiutarmi?

Ho capito che devo prendere l'handle della finestra a cui voglio attribuire il focus e poi.. ?
Che funzione devo richiamare per assegnarle il focus? :confused:

slartibartfast
31-07-2009, 17:52
SetFocus(hWnd);

Rsk
31-07-2009, 17:57
SetFocus(hWnd);
grazie.. e per prendere l'handler?

edit: ho provato così: SetFocus(FindWindow("firefox", NULL));

ma non funziona granchè

slartibartfast
31-07-2009, 18:31
http://msdn.microsoft.com/en-us/library/ms633499%28VS.85%29.aspx

Rsk
01-08-2009, 11:23
Nessuno che lo sappia fare?

banryu79
03-08-2009, 11:34
grazie.. e per prendere l'handler?

edit: ho provato così: SetFocus(FindWindow("firefox", NULL));

ma non funziona granchè

Facendo come tu hai fatto non funziona, e il perchè non funziona (e di conseguenza il come vada fatto) lo vedi grazie al link che ti ha postato slartibartfast...

Come si vede dalla documentazione, il primo argomento passato alla FindWindow è il "Class Name" della finestra, e il secondo parametro è la "Window Title" ovvero il titolo che compare nella barra del titolo (appunto).

Tu passi la stringa "firefox" come Window Class Name, e mi sa che non è la stringa corretta, leggendo in giro su internet ho letto cha la Class Name per FireFox è la stringa: "MozillaUIWindowClass"...

[OT]
@slartibartfast: ma te sei per caso lo stesso slartibartfast autore del mod "Texture Fix - Balmora Expansions? Se sì complimentissimi, Morrowind è il mio gioco per PC preferito di sempre :)

Rsk
03-08-2009, 19:22
Facendo come tu hai fatto non funziona, e il perchè non funziona (e di conseguenza il come vada fatto) lo vedi grazie al link che ti ha postato slartibartfast...

Come si vede dalla documentazione, il primo argomento passato alla FindWindow è il "Class Name" della finestra, e il secondo parametro è la "Window Title" ovvero il titolo che compare nella barra del titolo (appunto).

Tu passi la stringa "firefox" come Window Class Name, e mi sa che non è la stringa corretta, leggendo in giro su internet ho letto cha la Class Name per FireFox è la stringa: "MozillaUIWindowClass"...

[OT]
@slartibartfast: ma te sei per caso lo stesso slartibartfast autore del mod "Texture Fix - Balmora Expansions? Se sì complimentissimi, Morrowind è il mio gioco per PC preferito di sempre :)

Ho provato così SetFocus(FindWindow("MozillaUIWindowClass", NULL));

ma una finestra in secondo piano resta in secondo piano

slartibartfast
03-08-2009, 19:32
Ho provato così SetFocus(FindWindow("MozillaUIWindowClass", NULL));

ma una finestra in secondo piano resta in secondo piano

Per portarla in primo piano puoi usare la funzione "SetWindowPos" in questo modo:

SetWindowPos(FindWindow("MozillaUIWindowClass", NULL), HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

@banryu79 Non sono lui, anche se morrowind piace molto anche a me :)

banryu79
04-08-2009, 08:30
@banryu79 Non sono lui, anche se morrowind piace molto anche a me :)
Ok, mi ha tradito il nick: pensavo fosse piuttosto originale e quindi che fosse difficile incappare in un "omonimo" ;)
EDIT: visto adesso da dove salta fuori il nick, stupido io a non aver pensato di controllare subito su Google, ottimo libro, dovrò leggerlo prima o poi:)

Rsk
04-08-2009, 10:01
Per portarla in primo piano puoi usare la funzione "SetWindowPos" in questo modo:

SetWindowPos(FindWindow("MozillaUIWindowClass", NULL), HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

@banryu79 Non sono lui, anche se morrowind piace molto anche a me :)

Ho provato ma non funziona :muro:

slartibartfast
04-08-2009, 10:53
Hai ragione, la funzione giusta è

SetForegroundWindow(FindWindow("MozillaUIWindowClass", NULL));

Rsk
04-08-2009, 11:13
Hai ragione, la funzione giusta è

SetForegroundWindow(FindWindow("MozillaUIWindowClass", NULL));

Grandissimo :D
Funziona perfettamente grazie

banryu79
04-08-2009, 11:21
Grandissimo :D
Funziona perfettamente grazie
Ehi, e io?
Ti ho trovato la giusta stringa per la Window Class Name :sofico: ingrato :D

slartibartfast
04-08-2009, 11:22
Ehi, e io?
Ti ho trovato la giusta stringa per la Window Class Name :sofico: ingrato :D

:ciapet:

Rsk
04-08-2009, 11:28
Ehi, e io?
Ti ho trovato la giusta stringa per la Window Class Name :sofico: ingrato :D

certo grazie :p era essenziale..

ragazzi ultimissima cosa.. e se volessi ripristinare un programma ridotto a icona?

slartibartfast
04-08-2009, 11:32
certo grazie :p era essenziale..

ragazzi ultimissima cosa.. e se volessi ripristinare un programma ridotto a icona?

ShowWindow(hWnd, SW_RESTORE);

Rsk
04-08-2009, 13:07
perfect :D