[C con Clase] Una Funcion en WinApi

Salvador Pozo salvador en conclase.net
Lun Dic 11 16:44:09 CET 2006


El pasado 2006-12-11 11:45:33, Abel escribió:
 
A> Hola a todos,
A>   estuve navegando por las páginas alemanas y encontré la siguiente Función que teóricamente refleja una imagen de distintas formas. Intente utilizarla, pero no me resulta. Talvez alguien me pueda indicar cómo debo llamar a esa función en mi programa. Gracias por toda respuesta.

Hola:

Lo que hace esta función es una sencilla transformación del espacio de coordenadas, tal como explicamos en nuestra página:

http://winapi.conclase.net/curso/index.php?cap=028#028_TRANSFORMACIONES

Para poder usar la función necesitas un manipulador de DC y un manipulador de mapa de bits.

El manipulador de DC es necesario para crear el mapa de bits reflejado, ya que es necesario un DC, y lo crea usando CreateCompatibleDC, es decir, crea un DC compatible con el que envías como parámetro.

El segundo parámetro es un manipulador del mapa de bits que quieras reflejar.

El tercero es un valor que indica qué tipo de reflexión quieres aplicar:

BITMAP_FLIP_NONE: 0: ninguna
BITMAP_FLIP_HORIZONTAL: 1: horizontal
BITMAP_FLIP_VERTICAL: 2: vertical
BITMAP_FLIP_BOTH: 3: ambas

El valor de retorno es un manipulador de mapa de bits, que sirve para referenciar el mapa de bits reflejado.

Si incluyes este código en tus programas, insertándolo o como parte de un proyecto, bastará con llamar a la función FlipBitmap como si se tratase de cualquier función del API de Windows.

Por ejemplo, al procesar el mensaje WM_PAINT:
HDC hdc;
HDC memDC;
HBITMAP hBitmap, hBMRef;

        case WM_PAINT:
           hdc = BeginPaint(hwnd, &ps);
           hBitmap = LoadBitmap(hInstance, "Bitmap");
           hBMRef = FlipBitmap(hdc, hBitmap, BITMAP_FLIP_HORIZONTAL);
           memDC = CreateCompatibleDC(hDC);
           SelectObject(memDC, hBMRef);
           BitBlt(hDC, 135, 225, 40, 40, memDC, 135, 225, SRCCOPY);
           DeleteDC(memDC);   
           DeleteObject(hBMRef);
           DeleteObject(hBitmap);
           EndPaint(hwnd, &ps);
           break;

No olvides que la función crea un mapa de bits, por lo que será necesario borrarlo cuando ya no lo necesites.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase