C/Visual C - cargar bitmap -URGENTE

 
Vista:

cargar bitmap -URGENTE

Publicado por Mari (8 intervenciones) el 25/10/2001 17:49:03
Quiero cargar un bitmap con funciones API en C, utilizo lo siguiente
hbm = LoadBitmap(NULL,MAKEINTRESOURCE(IDB_BITMAP1));
o bien
hbm=LoadImage(hInst,NULL, IMAGE_BITMAP, bm.bmWidth, bm.bmHeight, LR_CREATEDIBSECTION|LR_LOADFROMFILE);

pero no me funciona. Alguien me puede en que fallo.

Gracias

Mari
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

RE:cargar bitmap -URGENTE

Publicado por Oscar (114 intervenciones) el 26/10/2001 05:32:18
En el llamado a LoadBitmap te falta pasarle la instancia.
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

RE:cargar bitmap -URGENTE

Publicado por SliderX (7 intervenciones) el 26/10/2001 15:36:33
Mirá no en el caso de que quieras cargar la Imagen desde un recurso, pero si la querés cargar de un archivo no tendrías que pasarle la instancia a la función LoadFromFile sino NULL. El resto de los parametros pasados estan bién.
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

RE:cargar bitmap -URGENTE

Publicado por SliderX (7 intervenciones) el 26/10/2001 16:20:12
Olvidate de la respuesta anterior. Empecemos de vuelta.
En el caso de que quieras cargar el bitmap desde el rígido, no tendrías que pasarle la instancia de tu programa a la función LoadImage. Además en la llamada a LoadImage te estás olvidando de pasarle la cadena de caracteres con el nombre del archivo que querés cargar.
La llamada tendría que ser así:

bmp = LoadImage( NULL, "image.bmp", IMAGE_BITMAP,
bm.bmWidth, bm.bmHeight,
LR_LOADFROMFILE );

Suerte.

<SliderX>

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

RE:cargar bitmap -URGENTE

Publicado por Mari (8 intervenciones) el 26/10/2001 18:02:31
Que es esto "desde el rígido"?? que significa??. En principio tendré que utilizar una función para saber si existe un fichero con nombre "bitmap.bmp" y si existe utilizaré la función LoadImage, entonces en "image.bmp", he de poner el path??. Y además sabes alguna función para buscar un fichero concreto?.
Muchas gracias.

Mari
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

RE:cargar bitmap -URGENTE

Publicado por SliderX (7 intervenciones) el 29/10/2001 19:01:13
Haber, empecemos desde el principio:
Vos dijistes que querías cargar un bitmap con funciones de la API de windows, e intentaste con las funciones:
1) LoadBitmap( )
2) LoadImage( )
pero no funcionó.

Veamos el primer caso:

Vos escribiste:

hbm = LoadBitmap(NULL,MAKEINTRESOURCE(IDB_BITMAP1));

Esta función se usa para cargar un bitmap que hayas linkeado en tu ejecutable como un recurso. En este caso te estás olvidando de pasarle la instancia de tu programa. Si querés cargarla de esta manera tendrías que hacerlo así:

hbm = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));

donde "hInstance" es la instancia de tu programa que te pasa windows en la función WinMain.

En el segundo caso vos escribiste:

hbm=LoadImage(hInst,NULL, IMAGE_BITMAP, bm.bmWidth, bm.bmHeight, LR_CREATEDIBSECTION | LR_LOADFROMFILE);

Con esta función podés cargar cualquier bitmap, ícono, cursor, etc.

para cargar un bitmap desde un archivo, tenes que hacerlo así:

bmp = LoadImage( NULL, FileName, IMAGE_BITMAP, Width, Height,
LR_LOADFROMFILE );

En este caso FileName es un puntero a una cadena de caracteres que contiene el nombre (incluido el path) del archivo con la imagen.

Por ejemplo:

char *FileName[ ] = "C:\Imagen.bmp";

Si la imagen se encuentra en el mísmo directorio en donde estás ejecutando el programa, podrías obviar el path, ej:

char *FileName = "Imagen.bmp";

Espero que te sirva.






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

RE:cargar bitmap -URGENTE

Publicado por mari (8 intervenciones) el 29/10/2001 19:50:14
Muchas gracias, este tema ya lo tengo solucionado, ahora el siguiente es imprimir este bitmap en una hoja ya configurada. Por lo que he encontrado por ahi, puede ser algo como utilizar una estructura PAINTSTRUCT, o algo asi similar y ademas BeginPaint, en fin que tengo un lio. Si me podeis ayudar
Gracias.
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

RE:cargar bitmap -URGENTE

Publicado por SliderX (7 intervenciones) el 30/10/2001 16:24:24
Mirá. Nunca usé las funciones de windows para impresión, pero a ver si te puedo dar alguna pista.

BeginPaint( ) sino me equivoco no tiene nada que ver con la impresión, se usa para repintar la ventana como respuesta al mensaje WM_PAINT:

...
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hWnd, &ps);

// acá vá todo tu código de dibujo

EndPaint(hWnd, &ps);

return 0;
}
...

ahora para imprimir necesitas usar las funciones StartDoc( ),
StartPage( ), EndPage( ), EndDoc( ).

StartDoc( ) comienza un trabajo de impresión y EndDoc( ) lo finaliza.
La llamada a StartDoc( ) es más o menos así:

int result = StartDoc( PrinterDC, &DocInfo);

donde PrinterDC es el dispositivo de contexto de la impresora en la que querés imprimir y DocInfo es un puntero a una estructura DOCINFO la cual contiene información sobre el trabajo de impresión.

StartPage( ) le dice al driver de la impresora que se prepare para recibir datos y toma como único parámetro el dispositivo de contexto de la impresora.

ej: int result = StartPage(PrinterDC);

en síntesis:

Una función de impresión tendría una estructura como ésta:

HDC PrinterDC = 0; // DC de la impresora
HDC hDC = 0;

DOCINFO di;
ZeroMemory(&di, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "Nombre del trabajo";


if(StartDoc(PrinterDC, &DocInfo) <= 0)
{
// Falló la función
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