Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: VC6
#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
 
					PSTR szCmdLine, int iCmdShow)
 
{
 
	static TCHAR szAppName [] = TEXT ("BitBlt") ;
 
	HWND                          hwnd ;
 
	MSG                           msg ;
 
	WNDCLASS                      wndclass ;
 

	wndclass.style                               = CS_HREDRAW | CS_VREDRAW ;
 
	wndclass.lpfnWndProc                         = WndProc ;
 
	wndclass.cbClsExtra                          = 0 ;
 
	wndclass.cbWndExtra                          = 0 ;
 
	wndclass.hInstance                           = hInstance ;
 
	wndclass.hIcon                              = LoadIcon (NULL, IDI_INFORMATION) ;
 
	wndclass.hCursor                             = LoadCursor (NULL, IDC_ARROW) ;
 
	wndclass.hbrBackground              = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
 
	wndclass.lpszMenuName                = NULL ;
 
	wndclass.lpszClassName               = szAppName ;
 

 
	if (!RegisterClass (&wndclass))
 
	{
 
		MessageBox (NULL, TEXT ("This program requires Windows NT!"),
 
			szAppName, MB_ICONERROR) ;
 
		return 0 ;
 
	}
 

 
	hwnd = CreateWindow (szAppName, TEXT ("BitBlt Demo"),
 
		WS_OVERLAPPEDWINDOW,
 
		CW_USEDEFAULT, CW_USEDEFAULT,
 
		CW_USEDEFAULT, CW_USEDEFAULT,
 
		NULL, NULL, hInstance, NULL) ;
 

	ShowWindow (hwnd, iCmdShow) ;
 
	UpdateWindow (hwnd) ;
 
	while (GetMessage (&msg, NULL, 0, 0))
 
	{
 
		TranslateMessage (&msg) ;
 
		DispatchMessage (&msg) ;
 
	}
 
	return msg.wParam ;
 
}
 

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
 
{
 
	static int            cxClient, cyClient, cxSource, cySource ;
 
	HDC                   hdcClient, hdcWindow ;
 
	int                   x, y ;
 
	PAINTSTRUCT           ps ;
 
	RECT r;
 
	HDC hdcMem;
 

	switch (message)
 
	{
 
	case WM_CREATE:
 
		cxSource = GetSystemMetrics (SM_CXSIZEFRAME) +
 
			GetSystemMetrics (SM_CXSIZE) ;
 
		cySource = GetSystemMetrics (SM_CYSIZEFRAME) +
 
			GetSystemMetrics (SM_CYCAPTION) ;
 
		return 0 ;
 
	case   WM_SIZE:
 
		cxClient = LOWORD (lParam) ;
 
		cyClient = HIWORD (lParam) ;
 
		return 0 ;
 

	case   WM_PAINT:
 

 

		hdcClient = BeginPaint (hwnd, &ps) ;
 
		/*hdcClient = GetDC(hwnd);*/
 
		r=ps.rcPaint;
		hdcMem = CreateCompatibleDC(hdcClient);
 
		hdcWindow = GetWindowDC (hwnd) ;
 

 
		for (y = 0 ; y < cyClient ; y += cySource)
 
			for (x = 0 ; x < cxClient ; x += cxSource)
				BitBlt (hdcMem, x, y, cxSource, cySource,
 
					hdcWindow, 0, 0, SRCCOPY) ;
			// where the problem exists

			BitBlt(hdcClient,
				r.left,
				r.top,
				r.right-r.left,
				r.bottom-r.top,
				hdcMem,
				r.left,
				r.top,
				SRCCOPY);
 
			//////////////////////////////////////////////////////////////////////////
			ReleaseDC (hwnd, hdcWindow) ;
 
			EndPaint (hwnd, &ps) ;
 
			return 0 ;
 

	case   WM_DESTROY:
 
		PostQuitMessage (0) ;
 
		return 0 ;
 
	}
 
	return DefWindowProc (hwnd, message, wParam, lParam) ;
 
}
I try to add a code below the for in the WM_PAINT ,that is
BitBlt(hdcClient,
    r.left,
    r.top,
    r.right-r.left,
    r.bottom-r.top,
    hdcMem,
    r.left,
    r.top,
    SRCCOPY);
,however this leads to the fail of display on the screen .I wonder where is the error.Hope to help me.Thank you .
Posted 29-Jun-12 18:01pm
Comments
Wes Aday at 30-Jun-12 8:25am
   
Out of the thousands of errors it could be you expect some one here to guess what it is?

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

The problem is that your painting only the hdcMem. You need to blast all bit out to your hdcWindow.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Maciej Los 205
1 Richard MacCutchan 185
2 DamithSL 170
3 Tomas Takac 146
4 OriginalGriff 132
0 OriginalGriff 5,130
1 DamithSL 4,237
2 Maciej Los 3,700
3 Kornfeld Eliyahu Peter 3,470
4 Sergey Alexandrovich Kryukov 2,846


Advertise | Privacy | Mobile
Web04 | 2.8.141216.1 | Last Updated 2 Jul 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100