ReactOS 0.4.15-dev-8102-g108db8f
vbltest.c File Reference
#include <windows.h>
#include <tchar.h>
Include dependency graph for vbltest.c:

Go to the source code of this file.

Macros

#define CURRENT_BMPS   4
 
#define CURRENT_ICONS   1
 
#define SCALE   1.5
 
#define OFFSET   5
 

Functions

BOOL WINAPI GdiAlphaBlend (HDC hdcDst, int xDst, int yDst, int wDst, int hDst, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, BLENDFUNCTION blendFunction)
 
BOOL WINAPI GdiTransparentBlt (HDC hdcDst, int xDst, int yDst, int wDst, int hDst, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, UINT crTransparent)
 
static LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 
static ATOM MyRegisterClass (HINSTANCE hInstance)
 
static BOOL InitInstance (HINSTANCE hInstance, int nCmdShow)
 
int WINAPI _tWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
 

Variables

HINSTANCE hInst
 
TCHAR szWindowClass [] = _T("testclass")
 

Macro Definition Documentation

◆ CURRENT_BMPS

#define CURRENT_BMPS   4

Definition at line 21 of file vbltest.c.

◆ CURRENT_ICONS

#define CURRENT_ICONS   1

Definition at line 22 of file vbltest.c.

◆ OFFSET

#define OFFSET   5

Definition at line 24 of file vbltest.c.

◆ SCALE

#define SCALE   1.5

Definition at line 23 of file vbltest.c.

Function Documentation

◆ _tWinMain()

int WINAPI _tWinMain ( HINSTANCE  hInstance,
HINSTANCE  hPrevInstance,
LPTSTR  lpCmdLine,
int  nCmdShow 
)

Definition at line 198 of file vbltest.c.

202{
203 MSG msg;
204
206
207 if (!InitInstance(hInstance, nCmdShow))
208 {
209 return FALSE;
210 }
211
212 while (GetMessage(&msg, NULL, 0, 0))
213 {
216 }
217
218 return (int)msg.wParam;
219}
#define msg(x)
Definition: auth_time.c:54
HINSTANCE hInstance
Definition: charmap.c:19
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
static ATOM MyRegisterClass(HINSTANCE hInstance)
Definition: vbltest.c:143
static BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
Definition: vbltest.c:166
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define GetMessage
Definition: winuser.h:5790
#define DispatchMessage
Definition: winuser.h:5765

◆ GdiAlphaBlend()

BOOL WINAPI GdiAlphaBlend ( HDC  hdcDst,
int  xDst,
int  yDst,
int  wDst,
int  hDst,
HDC  hdcSrc,
int  xSrc,
int  ySrc,
int  wSrc,
int  hSrc,
BLENDFUNCTION  blendFunction 
)

Referenced by WndProc().

◆ GdiTransparentBlt()

BOOL WINAPI GdiTransparentBlt ( HDC  hdcDst,
int  xDst,
int  yDst,
int  wDst,
int  hDst,
HDC  hdcSrc,
int  xSrc,
int  ySrc,
int  wSrc,
int  hSrc,
UINT  crTransparent 
)

◆ InitInstance()

static BOOL InitInstance ( HINSTANCE  hInstance,
int  nCmdShow 
)
static

Definition at line 166 of file vbltest.c.

167{
168 HWND hWnd;
169
171
174 _T("Various blit and blend operations"),
178 640,
179 640,
180 NULL,
181 NULL,
182 hInstance,
183 NULL);
184
185 if (!hWnd)
186 {
187 return FALSE;
188 }
189
190 ShowWindow(hWnd, nCmdShow);
192
193 return TRUE;
194}
HWND hWnd
Definition: settings.c:17
#define TRUE
Definition: types.h:120
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
TCHAR szWindowClass[]
Definition: vbltest.c:27
HINSTANCE hInst
Definition: vbltest.c:26
#define _T(x)
Definition: vfdio.h:22
#define CreateWindowEx
Definition: winuser.h:5755
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI UpdateWindow(_In_ HWND)
#define CW_USEDEFAULT
Definition: winuser.h:225

Referenced by _tWinMain().

◆ MyRegisterClass()

static ATOM MyRegisterClass ( HINSTANCE  hInstance)
static

Definition at line 143 of file vbltest.c.

144{
145 WNDCLASSEX wcex;
146
147 wcex.cbSize = sizeof(WNDCLASSEX);
148
149 wcex.style = CS_HREDRAW | CS_VREDRAW;
150 wcex.lpfnWndProc = WndProc;
151 wcex.cbClsExtra = 0;
152 wcex.cbWndExtra = 0;
153 wcex.hInstance = hInstance;
154 wcex.hIcon = NULL;
156 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
157 wcex.lpszMenuName = NULL;
159 wcex.hIconSm = NULL;
160
161 return RegisterClassEx(&wcex);
162}
int cbClsExtra
Definition: winuser.h:3204
HINSTANCE hInstance
Definition: winuser.h:3206
HCURSOR hCursor
Definition: winuser.h:3208
LPCSTR lpszMenuName
Definition: winuser.h:3210
HICON hIconSm
Definition: winuser.h:3212
UINT style
Definition: winuser.h:3202
int cbWndExtra
Definition: winuser.h:3205
UINT cbSize
Definition: winuser.h:3201
WNDPROC lpfnWndProc
Definition: winuser.h:3203
LPCSTR lpszClassName
Definition: winuser.h:3211
HICON hIcon
Definition: winuser.h:3207
HBRUSH hbrBackground
Definition: winuser.h:3209
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Definition: vbltest.c:30
#define CS_VREDRAW
Definition: winuser.h:658
#define COLOR_WINDOW
Definition: winuser.h:918
#define CS_HREDRAW
Definition: winuser.h:653
#define IDC_ARROW
Definition: winuser.h:687
#define RegisterClassEx
Definition: winuser.h:5837
#define LoadCursor
Definition: winuser.h:5812
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5719

Referenced by _tWinMain().

◆ WndProc()

static LRESULT CALLBACK WndProc ( HWND  hWnd,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 30 of file vbltest.c.

31{
32 static HBITMAP hbmList[CURRENT_BMPS];
33 static HICON hicList[CURRENT_ICONS];
34
35 switch (message)
36 {
37 case WM_CREATE:
38 {
43 hicList[0] = (HICON)LoadIcon(hInst, MAKEINTRESOURCE(3200));
44 break;
45 }
46
47 case WM_PAINT:
48 {
49 PAINTSTRUCT ps;
50 HDC hdc, hdcMem;
52 BLENDFUNCTION bfunc;
53 int x = 0, y = 0, i;
54 hdc = BeginPaint(hWnd, &ps);
56
58 bfunc.BlendFlags = 0;
59 bfunc.BlendOp = AC_SRC_OVER;
60 bfunc.SourceConstantAlpha = 128;
61
62 /* bitmaps */
63 for(i = 0; i < CURRENT_BMPS; i++)
64 {
65 y = 0;
66 SelectObject(hdcMem, hbmList[i]);
67 GetObject(hbmList[i], sizeof(BITMAP), &bitmap);
68
69 /* bit blt */
70 BitBlt(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
71 y += bitmap.bmHeight + OFFSET;
72
73 /* stretch blt, org size */
74 StretchBlt(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);
75 y += bitmap.bmHeight + OFFSET;
76
77 /* stretch blt, scaled */
78 StretchBlt(hdc, x, y, bitmap.bmWidth*SCALE, bitmap.bmHeight*SCALE, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);
79 y += bitmap.bmHeight*SCALE + OFFSET;
80
81 /* transparent blt, transparency: grey */
82 GdiTransparentBlt(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, 128*256*256+128*256+128);
83 y += bitmap.bmHeight + OFFSET;
84
85 /* transparent blt, transparency: grey, scaled */
86 GdiTransparentBlt(hdc, x, y, bitmap.bmWidth*SCALE, bitmap.bmHeight*SCALE, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, 128*256*256+128*256+128);
87 y += bitmap.bmHeight*SCALE + OFFSET;
88
89 /* alpha blend, org size */
90 GdiAlphaBlend(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, bfunc);
91 y += bitmap.bmHeight + OFFSET;
92
93 /* alpha blend, scaled */
94 GdiAlphaBlend(hdc, x, y, bitmap.bmWidth*SCALE, bitmap.bmHeight*SCALE, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, bfunc);
95 y += bitmap.bmHeight*SCALE + OFFSET;
96
97 x += bitmap.bmWidth*SCALE + OFFSET;
98 }
99
100 /* icons */
101 for(i = 0; i < CURRENT_ICONS; i++)
102 {
103 y = 0;
104 /* pure icon */
105 DrawIcon(hdc, x, y, hicList[i]);
106 y += bitmap.bmHeight + OFFSET;
107
108 /* normal icon using Ex */
109 DrawIconEx(hdc, x, y, hicList[i], 0, 0, 0, NULL, DI_NORMAL);
110 y += bitmap.bmHeight + OFFSET;
111
112 /* normal icon using Ex with bigger size */
113 DrawIconEx(hdc, x, y, hicList[i], bitmap.bmWidth, bitmap.bmHeight, 0, NULL, DI_NORMAL);
114 y += bitmap.bmHeight + OFFSET;
115
116 /* only icon using Ex */
117 DrawIconEx(hdc, x, y, hicList[i], 0, 0, 0, NULL, DI_IMAGE);
118 y += bitmap.bmHeight + OFFSET;
119
120 /* mask using Ex */
121 DrawIconEx(hdc, x, y, hicList[i], 0, 0, 0, NULL, DI_MASK);
122 y += bitmap.bmHeight + OFFSET;
123
124 x += bitmap.bmWidth*SCALE + OFFSET;
125 }
126
128 EndPaint(hWnd, &ps);
129 break;
130 }
131
132 case WM_DESTROY:
134 break;
135 default:
137 }
138 return 0;
139}
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
Definition: common.c:57
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define AC_SRC_ALPHA
Definition: alphablend.c:9
HDC hdc
Definition: main.c:9
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:92
static HICON
Definition: imagelist.c:84
#define DefWindowProc
Definition: ros2win.h:31
Definition: bl.h:1331
BYTE BlendOp
Definition: wingdi.h:2759
BYTE BlendFlags
Definition: wingdi.h:2760
BYTE AlphaFormat
Definition: wingdi.h:2762
BYTE SourceConstantAlpha
Definition: wingdi.h:2761
Definition: uimain.c:89
Definition: tftpd.h:60
#define SCALE
Definition: vbltest.c:23
#define OFFSET
Definition: vbltest.c:24
BOOL WINAPI GdiTransparentBlt(HDC hdcDst, int xDst, int yDst, int wDst, int hDst, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, UINT crTransparent)
#define CURRENT_BMPS
Definition: vbltest.c:21
BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int wDst, int hDst, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, BLENDFUNCTION blendFunction)
#define CURRENT_ICONS
Definition: vbltest.c:22
HDC hdcMem
Definition: welcome.c:104
#define AC_SRC_OVER
Definition: wingdi.h:1369
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
#define DI_NORMAL
Definition: wingdi.h:72
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
#define SRCCOPY
Definition: wingdi.h:333
#define DI_IMAGE
Definition: wingdi.h:70
#define DI_MASK
Definition: wingdi.h:71
#define GetObject
Definition: wingdi.h:4468
BOOL WINAPI DeleteDC(_In_ HDC)
#define WM_PAINT
Definition: winuser.h:1620
#define IMAGE_BITMAP
Definition: winuser.h:211
#define WM_CREATE
Definition: winuser.h:1608
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
BOOL WINAPI DrawIcon(_In_ HDC, _In_ int, _In_ int, _In_ HICON)
Definition: cursoricon.c:2049
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI DrawIconEx(_In_ HDC, _In_ int, _In_ int, _In_ HICON, _In_ int, _In_ int, _In_ UINT, _In_opt_ HBRUSH, _In_ UINT)
Definition: cursoricon.c:2059
#define LoadIcon
Definition: winuser.h:5813
#define LoadImage
Definition: winuser.h:5815
#define LR_DEFAULTCOLOR
Definition: winuser.h:1087
#define WM_DESTROY
Definition: winuser.h:1609
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define MAKEINTRESOURCE
Definition: winuser.h:591

Referenced by MyRegisterClass().

Variable Documentation

◆ hInst

HINSTANCE hInst

Definition at line 26 of file vbltest.c.

Referenced by InitInstance(), and WndProc().

◆ szWindowClass

TCHAR szWindowClass[] = _T("testclass")

Definition at line 27 of file vbltest.c.

Referenced by InitInstance(), and MyRegisterClass().