C/Visual C - Quitar caracteres raros y redimensionar ventana

 
Vista:
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Quitar caracteres raros y redimensionar ventana

Publicado por Meta (22 intervenciones) el 28/03/2020 14:08:02
Hola:

Paso 1.

Quiero quitar caracter raros hasta en el título cuando uso tildes.

Antes usaba el #include "pch.h". Ya no se como añadirlo. Hace dos años que no uso el C++ de Visual Studio Community 2019.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.
 
using namespace std;
using std::cout;
 
int main(void)
{
 
	SetConsoleTitle(TEXT("Título de la ventana. Win32 C++ 2019."));
 
	cout << "Terminarías. Conocerías. Título. Analógico. \n";
	cout << "Muchas gracias mi muy distinguido amigo.";
 
	cin.get();
	return 0;
}

Paso 2.

¿Cómo redimensionar la ventana?

Por ejemplo, en C# se usa esto.

1
2
3
4
5
6
// Tamaño ventana consola.
// X anchura.
Console.WindowWidth = 20;
 
// Y altura.
Console.WindowHeight = 5;
Más fácil aún y en una sola línea es:
1
Console.SetWindowSize(20, 5);
¿Cómo se hace en C++?

Gracias.
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

Quitar caracteres raros y redimensionar ventana

Publicado por Nacho (69 intervenciones) el 28/03/2020 19:00:31
Ese es el problema de usar todos esos añadidos en la programación, que sí, hacen las cosas más fáciles, pero a cambio ni sabes lo que haces. Por eso ya me pueden decir misa que yo seguiré usando el api de windows, el t-sql y demás herramientas anteriores al 2020.

Api de windows para poner título a una ventana : SetWindowText. Eso sí, dentro del mismo proceso. Si es una ventana de otro proceso hay que mandarle un WM_SETTEXT con un SendMessage, claro, porque es completamente necesario que sea síncrono para que al procesar los datos la otra ventana sigan existiendo los datos que mandas.

Para cambiar el tamaño de una ventana : SetWindowPos.

No fallan nunca y funcionan desde hace más de 40 años.
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
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Quitar caracteres raros y redimensionar ventana

Publicado por Meta (22 intervenciones) el 28/03/2020 19:44:10
Hola compañero:

SetWindowText, será para formularios Windows. Estoy con la consola.

1
SetWindowText("Hola");

Si funciona como dices, a mi no. Ni haciendo esto.
1
SetWindowText(TEXT("Hola"));

En cuanto a redimensionar la pantalla, pensé que era así.
1
SetWindowPos(40, 80);

Lo veo muy lioso, según aquí, no se que hacer.

Recuedo que en Visual studio Community 2017, en el cual uso ahora miismo el 2019, había que hacer algo en el IDE, para que se quite lo de las tildes. No recuerdo nada lo que hice para lograrlo, lo que se que se añade esta cabecer.
1
#include "pch.h"

No es escribir y ya está. Se agrega esos archivos en el proyecto solo, también se añade pch.ccp. Ya no se hacerlo.

Aún sigo sin lograr ningún objetivo por ignorancia extrema.

Gracias por la respuesta.
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

Quitar caracteres raros y redimensionar ventana

Publicado por Nacho (69 intervenciones) el 28/03/2020 20:07:05
Pero qué pasa.

Lo que tú llamas un formulario windows es una ventana de windows que se crea así :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
HWND CreateWindowEx(
  DWORD     dwExStyle,
  LPCSTR    lpClassName,
  LPCSTR    lpWindowName,
  DWORD     dwStyle,
  int       X,
  int       Y,
  int       nWidth,
  int       nHeight,
  HWND      hWndParent,
  HMENU     hMenu,
  HINSTANCE hInstance,
  LPVOID    lpParam
);

Lo que tú llamas la consola de windows es una ventana de windows que se crea exactamante igual, a no ser que uses el windows 98.


1
2
3
4
BOOL SetWindowText(
  HWND   hWnd,
  LPCSTR lpString
);

Eso es SetWindowsText, no lo que tú pretendas inventarte.


1
2
3
4
5
6
7
8
9
BOOL SetWindowPos(
  HWND hWnd,
  HWND hWndInsertAfter,
  int  X,
  int  Y,
  int  cx,
  int  cy,
  UINT uFlags
);

Eso es SetWindowPos.

En la msdn dice muchas cosas para que entiendas cómo es el funcionamiento del api de windows, pero lo que no te va a decir es que con una función que sirve para algo no sirve para ese algo.

Si no sabes usarlo porque lo ves lioso, me lo creo, pero pon solución a eso y no me cuentes cosas raras.
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
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Quitar caracteres raros y redimensionar ventana

Publicado por Meta (22 intervenciones) el 29/03/2020 03:49:10
JAjajaja jaajajjaja ajj ajaj a ja ja. No se usarlo, pero eso de contarte cosas raras, jejejeje.

¿Dónde pongo todo ese trozo de código?

1
2
3
4
5
6
7
8
9
BOOL SetWindowPos(
HWND hWnd,
HWND hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
UINT uFlags
);

Por ahora he hecho esto.
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
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.
 
using namespace std;
using std::cout;
using std::cin;
 
int main(void)
{
 
	SetConsoleTitle(TEXT("Título de la ventana. Win32 C++ 2019."));
 
	cout << "Terminarías. Conocerías. Título. Analógico. \n";
	cout << "Muchas gracias mi muy distinguido amigo.";
 
	cin.get();
	return 0;
}
 
BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
{
	X = 40;
	Y = 80;
	return 0;
}

Saludos.
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
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Quitar caracteres raros y redimensionar ventana

Publicado por Meta (22 intervenciones) el 29/03/2020 12:41:56
Quiero evitar que se muestre ciertas letras con tildes de esta manera.

cap-2110719
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

Quitar caracteres raros y redimensionar ventana

Publicado por Nacho (69 intervenciones) el 29/03/2020 16:31:51
Si lo que quieres es que no salgan caracteres raros lo que tienes que hacer es aclararte con el unicode, que tú y el windows uséis el mismo código unicode.

SetWindowPos se usa así :;https://cpp.hotexamples.com/examples/-/-/SetWindowPos/cpp-setwindowpos-function-examples.html
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
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Quitar caracteres raros y redimensionar ventana

Publicado por Meta (22 intervenciones) el 29/03/2020 18:56:04
Ni más código solo para hacer dos cosas.

Gracias por todo campeón por las ayudas. Por fin funciona.

Dejo el código abajo por si alguien lo necesita, o solamente por curiosidad.

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
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.
 
using namespace std;
 
int main(void)
{
	// Mostrar caracteres correctamente en pantalla.
	SetConsoleOutputCP(65001);
	wchar_t titulo[128];
	MultiByteToWideChar(CP_UTF8, 0, "Título de la ventana. Win32 C++ 2019.", -1, titulo, 128);
	SetConsoleTitle(titulo);
 
	// Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
	SMALL_RECT r = { 0, 0, 49, 9 };
	SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);
 
	// Mostrar textos en pantalla.
	cout << "Terminarías. Conocerías. Título. Analógico. \n";
	cout << "Muchas gracias mi muy distinguido amigo.";
 
	// Esperando pulsar Enter para salir.
	cin.get();
	return 0;
}

Un cordial saludos.
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