PDA

Visualizza versione completa : FindWindow C


NS-1
08-11-2004, 17.04.50
Ciao,

Vorrei poter posizionare la mia finestra al centro esatto del desktop ma per fare questo devo agganciare l'HWND del desktop.

nella funzione FindWindow() cosa devo inserire?

ho provato ad utilizzare spy++ e ottengo:
"SysListView32" e "FolderView"

ma poi nel programma la funzione ritorna NULL...

cosa posso fare?

Grazie...

NS-1
08-11-2004, 17.16.14
ho trovato questo e lo riporto per chi ne avrà bisogno in futuro...


desktop = FindWindow("DesktopBackgroundClass", NULL);
if (!desktop)
{
desktop = GetDesktopWindow();
}

LoryOne
08-11-2004, 17.22.29
Sbaglio o avevi già posto il quesito ?
Devi ricavre le dimensioni del desktop che altro non sono che la risoluzione.
Poi devi conoscere le dimensioni della tua finestra.
A questo punto devi effettuare un calcolo per posizionare la tua finestra al centro e riposizionarla conoscendo le coordinate degli angoli.
In questo caso è utilissima la struttura RECT.

Nel quesito posto da Captain-Hook a proposito della limitazione del movimento del mouse in un'area prestabilita c'è già parecchio.

NS-1
08-11-2004, 17.33.19
Si avevo già postato una cosa del genere... :D
ho utilizzato GetWindowRect e ho salvato le coordinate nella struct RECT myRect..
adesso sto facendo i calcoli per posizionare la finestra...

:D:D:D:D

NS-1
08-11-2004, 17.49.42
ho fatto così:

SetWindowPos(myWindow, HWND_TOPMOST, myRect.right/2-250, myRect.top/2+250, 500, 500, SWP_SHOWINDOW);

sembra funzionare tutto... è OK?

NS-1
08-11-2004, 18.19.55
forse così va meglio... :D:D:D


#define LARG 500
#define ALT 400

main(){
HWND myFin, myDesk;
RECT myRect;
int daSinistra, daAlto;


SetConsoleTitle("NS-1");

if((myDesk = GetDesktopWindow()) == NULL)
printf("DESKTOP NON AGGANCIATO!\n\n");

GetWindowRect(myDesk, &myRect);
//printf("\n%d %d %d %d\n\n", myRect.left, myRect.top, myRect.right, myRect.bottom);

myFin = FindWindow("ConsoleWindowClass","NS-1");

daSinistra = myRect.right/2-LARG/2;
daAlto = myRect.bottom/2-ALT/2;

SetWindowPos(myFin, HWND_TOPMOST, daSinistra, daAlto, LARG, ALT, SWP_SHOWWINDOW);//posiziono al centro del desktop

NS-1
10-11-2004, 12.09.03
Lory, Web, Alh, l'ultimo post è corretto?

P8257 WebMaster
10-11-2004, 17.01.08
Si, corretto .. funziona (Y)...

Toglierei i messaggi di errore, ma per il resto è ok. :)

Bye :cool:

NS-1
10-11-2004, 17.52.43
scusa, quali errori?

P8257 WebMaster
10-11-2004, 18.17.01
printf("DESKTOP NON AGGANCIATO!\n\n");



Questo, in un eventuale applicativo deve esserci solo a scopo di debug...

Bye :cool:

NS-1
11-11-2004, 00.05.25
:D:D:D (Y)