Dev - C++ - mover todas las ventanas excepto una

 
Vista:

mover todas las ventanas excepto una

Publicado por Rodrigo (3 intervenciones) el 16/06/2017 04:37:55
Soy nuevo en C++ pero algo se de lógica de programación.
Quiero hacer un ejercicio simple: Quiero mover todas las ventanas del escritorio a un punto, excepto una que yo escoja. Con este código puedo mover todas las ventanas, pero no sé todavía cómo aplicar una excepción. Ojala puedan ayudarme, saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <windows.h>
using namespace std;
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
{
	EnumWindows(EnumWindowsProc, NULL);
 
	return 0;
}
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
 
	char class_name[80];
	char title[80];
	GetClassName(hwnd,class_name, sizeof(class_name));
	GetWindowText(hwnd,title,sizeof(title));
    cout <<"Window title: "<<title<<endl;
    cout <<"Class name: "<<class_name<<endl<<endl;
 
SetWindowPos(hwnd, HWND_TOP, 50, 50, 800, 500, 0);
 
 
	return TRUE;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Sergio Can
Val: 58
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

mover todas las ventanas excepto una

Publicado por Sergio Can (23 intervenciones) el 19/06/2017 10:41:52
Nunca me eh metido en librerías de windows.h pero podrías probar algo así y ver si funciona. Ando en el celular así que no lo pude probar ni ver si funciona, me avisas si funciona, si no luego investigo bien jajajaja



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
{
        char notMove[80];
        //Título de la ventana que no quieres mover
        cin >> notMove;
	EnumWindows(EnumWindowsProc, NULL, notMove);
 
	return 0;
}
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam, char * notMove)
{
 
	char class_name[80];
	char title[80];
	GetClassName(hwnd,class_name, sizeof(class_name));
	GetWindowText(hwnd,title,sizeof(title));
        cout <<"Window title: "<<title<<endl;
        cout <<"Class name: "<<class_name<<endl<<endl;
 //Si títulos son diferentes lo mueve
If (strcmp(title,notMove)!=0)
{
SetWindowPos(hwnd, HWND_TOP, 50, 50, 800, 500, 0);
}
 
 
	return TRUE;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

mover todas las ventanas excepto una

Publicado por rodimus111 (3 intervenciones) el 19/07/2017 06:51:56
No me funcionó... NO sé bien cómo agregar el nombre que dices... Lo intento con
notMove="calculadora"

pero después sale un error en EnumWindows(EnumWindowsProc, NULL, notMove);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sergio Can
Val: 58
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

mover todas las ventanas excepto una

Publicado por Sergio Can (23 intervenciones) el 19/07/2017 07:40:44
Lo arregle de una forma rara, solo poniendo una variable global y leyendo del main jajaja
al parecer las funciones de proc son así por default, así que no se podían modificar y eso tiraba un error, en fin,
solo tienes que saber el nombre exacto de la app que no quieres mover.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
 
#include <windows.h>
 
using namespace std;
 
 
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
 
char notMove[80];
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
 
{
 
	cin>>notMove;
	EnumWindows(EnumWindowsProc, NULL);
 
 
 
	return 0;
 
}
 
 
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
 
{
 
 
 
	char class_name[80];
 
	char title[80];
 
	GetClassName(hwnd,class_name, sizeof(class_name));
 
	GetWindowText(hwnd,title,sizeof(title));
 
    cout <<"Window title: "<<title<<endl;
 
    cout <<"Class name: "<<class_name<<endl<<endl;
 
 	if (strcmp(title,notMove)!=0)
	{
		SetWindowPos(hwnd, HWND_TOP, 50, 50, 800, 500, 0);
	}
 
 
 
 
 
 
	return TRUE;
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar