ReactOS 0.4.16-dev-125-g798ea90
stretchblt.cpp File Reference
#include <windows.h>
#include <stdio.h>
Include dependency graph for stretchblt.cpp:

Go to the source code of this file.

Enumerations

enum  {
  ID_ZOOM25 , ID_ZOOM50 , ID_ZOOM75 , ID_ZOOM100 ,
  ID_ZOOM125 , ID_ZOOM150 , ID_ZOOM200 , ID_ZOOM300
}
 

Functions

LRESULT CALLBACK MainWndProc (HWND HWnd, UINT Msg, WPARAM WParam, LPARAM LParam)
 
int APIENTRY WinMain (HINSTANCE HInstance, HINSTANCE HPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
 

Variables

HWND HListBox = NULL
 
HWND VListBox = NULL
 
const int ID_LISTBOX = 101
 
const int ID_LISTBOX2 = 102
 
BOOL useDIBits =FALSE
 
HINSTANCE HInst
 
HINSTANCE HPrevInst
 
TCHARcmdline
 
const charWndClassName = "GMainWnd"
 
BITMAP bmp
 
BITMAPINFO bmInfo
 
charbbits = NULL
 
const charfilename = "LENA.BMP"
 
HDC HMemDC = NULL
 
HBITMAP HOldBmp = NULL
 
float zoom_factor_h = 0.5
 
float zoom_factor_v = 0.5
 
RECT RDest = {5, 5, 0, 0}
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
ID_ZOOM25 
ID_ZOOM50 
ID_ZOOM75 
ID_ZOOM100 
ID_ZOOM125 
ID_ZOOM150 
ID_ZOOM200 
ID_ZOOM300 

Definition at line 146 of file stretchblt.cpp.

@ ID_ZOOM300
Definition: stretchblt.cpp:147
@ ID_ZOOM75
Definition: stretchblt.cpp:146
@ ID_ZOOM50
Definition: stretchblt.cpp:146
@ ID_ZOOM25
Definition: stretchblt.cpp:146
@ ID_ZOOM100
Definition: stretchblt.cpp:146
@ ID_ZOOM200
Definition: stretchblt.cpp:147
@ ID_ZOOM125
Definition: stretchblt.cpp:147
@ ID_ZOOM150
Definition: stretchblt.cpp:147

Function Documentation

◆ MainWndProc()

LRESULT CALLBACK MainWndProc ( HWND  HWnd,
UINT  Msg,
WPARAM  WParam,
LPARAM  LParam 
)

Definition at line 149 of file stretchblt.cpp.

151{
152 switch (Msg)
153 {
154 case WM_CREATE:
155 {
156 // check commandline
157 if (strlen(cmdline) != 0)
158 {
159
160 useDIBits = TRUE;
161 }
162 else
164
165 // create a memory DC
167 if (HMemDC)
168 {
169 // load a bitmap from file
170 HBITMAP HBmp =
171 static_cast<HBITMAP>(
173 0, 0, LR_LOADFROMFILE)
174 );
175 if (HBmp)
176 {
177 // extract dimensions of the bitmap
178 GetObject(HBmp, sizeof(BITMAP), &bmp);
179
180 // fill the BITMAPINFO stucture for further use by StretchDIBits
182 bmInfo.bmiHeader.biWidth = bmp.bmWidth;
183 bmInfo.bmiHeader.biHeight = bmp.bmHeight;
184 bmInfo.bmiHeader.biPlanes = 1;//bmp.bmPlanes;
185 bmInfo.bmiHeader.biBitCount = bmp.bmBitsPixel;
191
192 // associate the bitmap with the memory DC
193 HOldBmp = static_cast<HBITMAP>(
195 );
196
197 if (useDIBits)
198 {
199 bbits = new char[bmp.bmHeight*bmp.bmWidthBytes*(bmp.bmBitsPixel / 8)];
200 //GetDIBits(HMemDC, HBmp, 0, bmp.bmHeight, bbits, &bmInfo, DIB_RGB_COLORS);
201
202 // Here goes a temp hack, since GetDIBits doesn't exist in ReactOS yet
203 FILE *f = fopen(filename, "rb");
204 BITMAPFILEHEADER bmpHeader;
205
206 fread(&bmpHeader, sizeof(BITMAPFILEHEADER), 1, f);
207 fread(&bmInfo, sizeof(BITMAPINFO), 1, f);
208 fseek(f, bmpHeader.bfOffBits, SEEK_SET);
209 fread(bbits, bmp.bmHeight*bmp.bmWidthBytes*(bmp.bmBitsPixel / 8), 1, f);
210
211 fclose(f);
212 }
213 }
214 }
215 }
216 case WM_COMMAND:
217 {
218 if (WParam == MAKEWPARAM(ID_LISTBOX, LBN_SELCHANGE) ||
220 {
221 switch (SNDMSG(HListBox, LB_GETCURSEL, 0, 0))
222 {
223 case ID_ZOOM25: zoom_factor_h = 0.25; break;
224 case ID_ZOOM50: zoom_factor_h = 0.50; break;
225 case ID_ZOOM75: zoom_factor_h = 0.75; break;
226 case ID_ZOOM100: zoom_factor_h = 1.00; break;
227 case ID_ZOOM125: zoom_factor_h = 1.25; break;
228 case ID_ZOOM150: zoom_factor_h = 1.50; break;
229 case ID_ZOOM200: zoom_factor_h = 2.00; break;
230 case ID_ZOOM300: zoom_factor_h = 3.00; break;
231 }
232
233 switch (SNDMSG(VListBox, LB_GETCURSEL, 0, 0))
234 {
235 case ID_ZOOM25: zoom_factor_v = 0.25; break;
236 case ID_ZOOM50: zoom_factor_v = 0.50; break;
237 case ID_ZOOM75: zoom_factor_v = 0.75; break;
238 case ID_ZOOM100: zoom_factor_v = 1.00; break;
239 case ID_ZOOM125: zoom_factor_v = 1.25; break;
240 case ID_ZOOM150: zoom_factor_v = 1.50; break;
241 case ID_ZOOM200: zoom_factor_v = 2.00; break;
242 case ID_ZOOM300: zoom_factor_v = 3.00; break;
243 }
244
245 // calculate the new width and height
246 const int new_width =
247 static_cast<int>(zoom_factor_h * bmp.bmWidth);
248 const int new_height =
249 static_cast<int>(zoom_factor_v * bmp.bmHeight);
250
251 // is zooming in?
252 bool zoom_in = (new_width > RDest.right - RDest.left);
253
254 // caculate the area that needs to be updated
255 RECT RUpdate = {
257 RDest.left + max(new_width, RDest.right - RDest.left),
258 RDest.top + max(new_height, RDest.bottom - RDest.top)
259 };
260
261 // adjust the dimenstions of the
262 // destination rectangle
263 RDest.right = RDest.left + new_width;
264 RDest.bottom = RDest.top + new_height;
265
266 // create an update region from the XOR combination
267 // of the update and destination rectangles
268 HRGN HUpdateRgn = CreateRectRgnIndirect(&RUpdate);
269 HRGN HDestRgn = CreateRectRgnIndirect(&RDest);
270 int result =
271 CombineRgn(HUpdateRgn, HUpdateRgn, HDestRgn, RGN_XOR);
272
273 // incite a repaint
274 if (result != NULLREGION && result != ERROR)
275 {
276 InvalidateRgn(HWnd, HUpdateRgn, true);
278 }
279 else if (result == NULLREGION)
280 {
281 InvalidateRect(HWnd, &RUpdate, zoom_in ? false : true);
282 }
283
284 // clean up
285 DeleteObject(HUpdateRgn);
286 DeleteObject(HDestRgn);
287 }
288 break;
289 }
290 case WM_PAINT:
291 {
292 PAINTSTRUCT ps;
293 const HDC Hdc = BeginPaint(HWnd, &ps);
294#if 0
295 try
296#endif
297 {
298 //
299 // TODO: add palette support (see Chapter 9)...
300 //
301 if (useDIBits)
302 {
303 if (RDest.right - RDest.left > 0)
304 {
305 if (zoom_factor_h < 1.0 || zoom_factor_v < 1.0)
306 {
308 }
309
310 // render the zoomed image
314 0, 0,
315 bmp.bmWidth, bmp.bmHeight,
316 bbits, &bmInfo,
318 SRCCOPY);
319 }
320 }
321 else
322 {
323 if (RDest.right - RDest.left > 0)
324 {
325
326 // use BitBlt when not zooming
327 if (zoom_factor_h == 1.0 && zoom_factor_v == 1.0)
328 {
329 BitBlt(Hdc, RDest.left, RDest.top,
332 HMemDC, 0, 0,
333 SRCCOPY);
334 }
335 else
336 {
337 if (zoom_factor_h < 1.0 || zoom_factor_v < 1.0)
338 {
340 }
341
342 // render the zoomed image
346 HMemDC, 0, 0,
347 bmp.bmWidth, bmp.bmHeight,
348 SRCCOPY);
349 }
350 }
351 }
352 }
353#if 0
354 catch (...)
355#endif
356 {
357 EndPaint(HWnd, &ps);
358 }
359 EndPaint(HWnd, &ps);
360 break;
361 }
362 case WM_DESTROY:
363 {
364 // clean up
367
368 if (bbits)
369 delete[] bbits;
370
372 return 0;
373 }
374 }
375 return DefWindowProc(HWnd, Msg, WParam, LParam);
376}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
struct @1636 Msg[]
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
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
#define BI_RGB
Definition: precomp.h:56
#define ERROR(name)
Definition: error_private.h:53
pKey DeleteObject()
GLfloat f
Definition: glext.h:7540
GLuint64EXT * result
Definition: glext.h:11304
_Check_return_opt_ _CRTIMP size_t __cdecl fread(_Out_writes_bytes_(_ElementSize *_Count) void *_DstBuf, _In_ size_t _ElementSize, _In_ size_t _Count, _Inout_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
_Check_return_opt_ _CRTIMP int __cdecl fseek(_Inout_ FILE *_File, _In_ long _Offset, _In_ int _Origin)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
const char * filename
Definition: ioapi.h:137
#define SEEK_SET
Definition: jmemansi.c:26
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:88
#define DefWindowProc
Definition: ros2win.h:31
RECT RDest
Definition: stretchblt.cpp:145
const int ID_LISTBOX
Definition: stretchblt.cpp:26
HWND HListBox
Definition: stretchblt.cpp:24
BITMAP bmp
Definition: stretchblt.cpp:135
HDC HMemDC
Definition: stretchblt.cpp:139
BOOL useDIBits
Definition: stretchblt.cpp:28
float zoom_factor_v
Definition: stretchblt.cpp:144
BITMAPINFO bmInfo
Definition: stretchblt.cpp:136
const int ID_LISTBOX2
Definition: stretchblt.cpp:27
float zoom_factor_h
Definition: stretchblt.cpp:143
HWND VListBox
Definition: stretchblt.cpp:25
TCHAR * cmdline
Definition: stretchblt.cpp:32
HINSTANCE HInst
Definition: stretchblt.cpp:30
char * bbits
Definition: stretchblt.cpp:137
HBITMAP HOldBmp
Definition: stretchblt.cpp:140
Definition: bl.h:1331
ULONG biClrImportant
Definition: precomp.h:52
USHORT biBitCount
Definition: precomp.h:46
ULONG biCompression
Definition: precomp.h:47
LONG biXPelsPerMeter
Definition: precomp.h:49
BITMAPINFOHEADER bmiHeader
Definition: wingdi.h:1476
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define max(a, b)
Definition: svc.c:63
#define SNDMSG
Definition: treelist.h:31
#define DIB_RGB_COLORS
Definition: wingdi.h:367
#define COLORONCOLOR
Definition: wingdi.h:954
#define NULLREGION
Definition: wingdi.h:361
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI CombineRgn(_In_opt_ HRGN hrgnDest, _In_opt_ HRGN hrgnSrc1, _In_opt_ HRGN hrgnSrc2, _In_ int fnCombineMode)
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 RGN_XOR
Definition: wingdi.h:360
#define GetObject
Definition: wingdi.h:4468
HRGN WINAPI CreateRectRgnIndirect(_In_ LPCRECT)
BOOL WINAPI DeleteDC(_In_ HDC)
int WINAPI SetStretchBltMode(_In_ HDC, _In_ int)
Definition: dc.c:1373
int WINAPI StretchDIBits(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ const VOID *, _In_ const BITMAPINFO *, _In_ UINT, _In_ DWORD)
#define WM_PAINT
Definition: winuser.h:1623
#define MAKEWPARAM(l, h)
Definition: winuser.h:4012
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
#define IMAGE_BITMAP
Definition: winuser.h:211
#define LR_LOADFROMFILE
Definition: winuser.h:1095
#define WM_CREATE
Definition: winuser.h:1611
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_COMMAND
Definition: winuser.h:1743
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI InvalidateRgn(_In_ HWND, _In_opt_ HRGN, _In_ BOOL)
#define LoadImage
Definition: winuser.h:5827
#define LBN_SELCHANGE
Definition: winuser.h:2078
#define WM_DESTROY
Definition: winuser.h:1612
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define LB_GETCURSEL
Definition: winuser.h:2042
#define RDW_NOERASE
Definition: winuser.h:1218
#define RDW_INVALIDATE
Definition: winuser.h:1217
HBITMAP HBmp

Referenced by WinMain().

◆ WinMain()

int APIENTRY WinMain ( HINSTANCE  HInstance,
HINSTANCE  HPrevInstance,
LPTSTR  lpCmdLine,
int  nCmdShow 
)

Definition at line 38 of file stretchblt.cpp.

40{
41 HInst = HInstance;
42 HPrevInst = HPrevInstance;
43 cmdline = lpCmdLine;
44
45 WNDCLASS wc;
46 memset(&wc, 0, sizeof(WNDCLASS));
47
50 wc.hInstance = HInstance;
52 wc.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_BTNFACE + 1);
54
55 if (RegisterClass(&wc))
56 {
57 HWND HWnd =
58 CreateWindow(WndClassName, TEXT("StretchBlt NonUniform Zooming Demo"),
61 0, 0, 675, 560,
62 NULL, NULL, HInst, NULL);
63
64 if (HWnd)
65 {
66 HListBox =
67 CreateWindowEx(WS_EX_CLIENTEDGE, "LISTBOX", "",
69 530, 5, 130, 150, HWnd,
70 reinterpret_cast<HMENU>(ID_LISTBOX),
71 HInst, NULL);
72 VListBox =
73 CreateWindowEx(WS_EX_CLIENTEDGE, "LISTBOX", "",
75 530, 5+170, 130, 150, HWnd,
76 reinterpret_cast<HMENU>(ID_LISTBOX2),
77 HInst, NULL);
78
79 if (HListBox && VListBox)
80 {
81// horizontal zoom
83 reinterpret_cast<LPARAM>("Zoom 25%"));
85 reinterpret_cast<LPARAM>("Zoom 50%"));
87 reinterpret_cast<LPARAM>("Zoom 75%"));
89 reinterpret_cast<LPARAM>("Zoom 100%"));
91 reinterpret_cast<LPARAM>("Zoom 125%"));
93 reinterpret_cast<LPARAM>("Zoom 150%"));
95 reinterpret_cast<LPARAM>("Zoom 200%"));
97 reinterpret_cast<LPARAM>("Zoom 300%"));
98// vertical zoom
100 reinterpret_cast<LPARAM>("Zoom 25%"));
102 reinterpret_cast<LPARAM>("Zoom 50%"));
104 reinterpret_cast<LPARAM>("Zoom 75%"));
106 reinterpret_cast<LPARAM>("Zoom 100%"));
108 reinterpret_cast<LPARAM>("Zoom 125%"));
110 reinterpret_cast<LPARAM>("Zoom 150%"));
112 reinterpret_cast<LPARAM>("Zoom 200%"));
114 reinterpret_cast<LPARAM>("Zoom 300%"));
115
116 }
117
118 ShowWindow(HWnd, nCmdShow);
119 UpdateWindow(HWnd);
120
121 MSG msg;
122 while (GetMessage(&msg, NULL, 0, 0))
123 {
126 }
127 }
128 }
129 return 0;
130}
#define msg(x)
Definition: auth_time.c:54
#define TEXT(s)
Definition: k32.h:26
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#define WS_CHILD
Definition: pedump.c:617
#define WS_CAPTION
Definition: pedump.c:624
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define LBS_NOTIFY
Definition: pedump.c:678
#define memset(x, y, z)
Definition: compat.h:39
const char * WndClassName
Definition: stretchblt.cpp:33
HINSTANCE HPrevInst
Definition: stretchblt.cpp:31
LRESULT CALLBACK MainWndProc(HWND HWnd, UINT Msg, WPARAM WParam, LPARAM LParam)
Definition: stretchblt.cpp:149
HBRUSH hbrBackground
Definition: winuser.h:3173
HINSTANCE hInstance
Definition: winuser.h:3170
HCURSOR hCursor
Definition: winuser.h:3172
UINT style
Definition: winuser.h:3166
LPCSTR lpszClassName
Definition: winuser.h:3175
WNDPROC lpfnWndProc
Definition: winuser.h:3167
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
LONG_PTR LPARAM
Definition: windef.h:208
#define CS_VREDRAW
Definition: winuser.h:658
#define CreateWindowEx
Definition: winuser.h:5767
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define CS_HREDRAW
Definition: winuser.h:653
#define IDC_ARROW
Definition: winuser.h:687
#define CS_DBLCLKS
Definition: winuser.h:651
#define LB_ADDSTRING
Definition: winuser.h:2034
#define CreateWindow
Definition: winuser.h:5766
#define GetMessage
Definition: winuser.h:5802
BOOL WINAPI UpdateWindow(_In_ HWND)
#define LoadCursor
Definition: winuser.h:5824
#define RegisterClass
Definition: winuser.h:5848
#define WS_EX_CLIENTEDGE
Definition: winuser.h:384
#define DispatchMessage
Definition: winuser.h:5777
#define COLOR_BTNFACE
Definition: winuser.h:931

Variable Documentation

◆ bbits

char* bbits = NULL

Definition at line 137 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ bmInfo

BITMAPINFO bmInfo

Definition at line 136 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ bmp

BITMAP bmp

Definition at line 135 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ cmdline

TCHAR* cmdline

Definition at line 32 of file stretchblt.cpp.

Referenced by _tWinMain(), _wsystem(), Activate_RunDLL(), command_line_to_args(), CommandLineToArgvW(), create_ie_window(), create_process(), create_server_process(), create_target_process(), custom_start_server(), debugclient_CreateProcess(), debugclient_CreateProcessAndAttach(), DECLARE_INTERFACE_(), DelNodeRunDLL32A(), DelNodeRunDLL32W(), DllInstall(), DoEntry(), fork_helper(), get_extrac_args(), getCommandLineFromProcess(), GetHostnameFromCommand(), HandleCommandLine(), IEWinMain(), InstallHinfSectionA(), InstallHinfSectionW(), InstallReg_RunDLL(), LaunchINFSectionA(), LaunchINFSectionExA(), LaunchINFSectionExW(), LaunchINFSectionW(), LoadPerfCounterTextStringsA(), LoadPerfCounterTextStringsW(), main(), MainWndProc(), MsiReinstallFeatureW(), OpenAs_RunDLLA(), OpenAs_RunDLLW(), OpenURLA(), PrintHTML(), process_args(), ProcessCmdLine(), processQueryValue(), read_reg_output_(), RegisterOCX(), ResetStatsW(), run_child(), run_child_process(), run_client(), run_cmdline(), run_rapps(), run_reg_exe_(), run_regedit_exe_(), runCmd(), RunDlg_GetParentDir(), RunDLL(), BtrfsPropSheet::set_cmdline(), start_server(), test___getmainargs_parent(), test_alloc_shared(), test_apc_deadlock(), test_Directory(), TEST_DoTestEntry(), TEST_DoTestEntryStruct(), test_ExitProcess(), test_file_inherit(), test_GetProcessVersion(), test_internet_features(), test_invalid_stdin(), test_IsWow64Process(), test_LaunchINFSection(), test_LaunchINFSectionEx(), test_LresultFromObject(), test_process_access(), test_query_process_debug_flags(), test_query_process_debug_object_handle(), test_query_process_debug_port(), test_shared_memory(), test_shared_memory_ro(), test_stdout_handle(), test_TerminateProcess(), UnloadPerfCounterTextStringsA(), UnloadPerfCounterTextStringsW(), WinMain(), wmain(), wWinMain(), and XCOPY_ParseCommandLine().

◆ filename

const char* filename = "LENA.BMP"

Definition at line 138 of file stretchblt.cpp.

◆ HInst

HINSTANCE HInst

Definition at line 30 of file stretchblt.cpp.

Referenced by MainWndProc(), and WinMain().

◆ HListBox

HWND HListBox = NULL

Definition at line 24 of file stretchblt.cpp.

Referenced by MainWndProc(), and WinMain().

◆ HMemDC

HDC HMemDC = NULL

Definition at line 139 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ HOldBmp

HBITMAP HOldBmp = NULL

Definition at line 140 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ HPrevInst

HINSTANCE HPrevInst

Definition at line 31 of file stretchblt.cpp.

Referenced by WinMain().

◆ ID_LISTBOX

const int ID_LISTBOX = 101

Definition at line 26 of file stretchblt.cpp.

Referenced by MainWndProc(), and WinMain().

◆ ID_LISTBOX2

const int ID_LISTBOX2 = 102

Definition at line 27 of file stretchblt.cpp.

Referenced by MainWndProc(), and WinMain().

◆ RDest

RECT RDest = {5, 5, 0, 0}

Definition at line 145 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ useDIBits

BOOL useDIBits =FALSE

Definition at line 28 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ VListBox

HWND VListBox = NULL

Definition at line 25 of file stretchblt.cpp.

Referenced by MainWndProc(), and WinMain().

◆ WndClassName

const char* WndClassName = "GMainWnd"

Definition at line 33 of file stretchblt.cpp.

Referenced by WinMain().

◆ zoom_factor_h

float zoom_factor_h = 0.5

Definition at line 143 of file stretchblt.cpp.

Referenced by MainWndProc().

◆ zoom_factor_v

float zoom_factor_v = 0.5

Definition at line 144 of file stretchblt.cpp.

Referenced by MainWndProc().