Click here to Skip to main content
15,909,656 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Path to user's desktop folder Pin
David Crow2-May-05 7:29
David Crow2-May-05 7:29 
GeneralRe: Path to user's desktop folder Pin
moredip2-May-05 7:33
moredip2-May-05 7:33 
Generalvc.net 2003 custom build question... Pin
Maximilien2-May-05 7:16
Maximilien2-May-05 7:16 
Generalcatching windows... Pin
Yevgeny Efter2-May-05 5:44
Yevgeny Efter2-May-05 5:44 
GeneralRe: catching windows... Pin
David Crow2-May-05 7:30
David Crow2-May-05 7:30 
GeneralRetrieve HTML as string behind proxy Pin
soapergem12-May-05 5:37
soapergem12-May-05 5:37 
GeneralRe: Retrieve HTML as string behind proxy Pin
Ravi Bhavnani2-May-05 7:43
professionalRavi Bhavnani2-May-05 7:43 
GeneralProblem with DirectDraw Pin
SuperTank2-May-05 5:35
SuperTank2-May-05 5:35 
Hello,
I have a problem with my code that follows, everything works aye okay until I´m shutting the application down. My desktop resolution is then being set back to 1024x768x16 60Hz, and I have no idea why.

I´m aware that it´s quite alot of text to go through, but I would highly appreciate any suggestions on what might be wrong.

Edit:
The problem does not occur when I erase my ProcessIdle() function.
How come?

Thanks!
<br />
#include <iostream><br />
#include <windows.h><br />
#include <ddraw.h><br />
<br />
#include "resource.h"<br />
using namespace std;<br />
<br />
const char CLASS_NAME[]		= "game_proj";<br />
const char WINDOW_NAME[]	= "game_proj";<br />
<br />
const int ResX	= 1024;<br />
const int ResY	= 768;<br />
const int iColor	= 32;<br />
<br />
HINSTANCE g_hInst	= NULL;<br />
HWND g_hWnd			= NULL;<br />
LPDIRECTDRAW7 g_pDD = NULL;<br />
<br />
LPDIRECTDRAWSURFACE7 g_lpDDSPrimary;<br />
LPDIRECTDRAWSURFACE7 g_lpDDSBack;<br />
<br />
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam,<br />
						 LPARAM lParam);<br />
BOOL InitiateWindow();<br />
BOOL InitiateDD();<br />
void ProcessIdle();<br />
void CleanUp();<br />
<br />
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,<br />
			   LPSTR lpCmdLine, int iCmdShow)<br />
{<br />
	HWND hWnd;<br />
	MSG msg;<br />
<br />
	g_hInst = hInstance;<br />
	InitiateWindow();<br />
<br />
	hWnd = CreateWindow(CLASS_NAME,<br />
		WINDOW_NAME,<br />
		WS_POPUP,<br />
		CW_USEDEFAULT,<br />
		CW_USEDEFAULT,<br />
		GetSystemMetrics(SM_CXSCREEN),<br />
		GetSystemMetrics(SM_CYSCREEN),<br />
		NULL,<br />
		NULL,<br />
		g_hInst,<br />
		NULL);<br />
<br />
	if(!hWnd)<br />
		return 0;<br />
<br />
	g_hWnd = hWnd;<br />
	if(InitiateDD() < 0)<br />
	{<br />
		CleanUp();<br />
		return 0;<br />
	}<br />
<br />
	ShowWindow(hWnd, iCmdShow);<br />
	UpdateWindow(hWnd);<br />
<br />
	while(true)<br />
	{<br />
		if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))<br />
		{<br />
			if(msg.message == WM_QUIT)<br />
				break;<br />
<br />
			TranslateMessage(&msg);<br />
			DispatchMessage(&msg);<br />
		}<br />
		else ProcessIdle();<br />
	}<br />
<br />
	return msg.wParam;<br />
}<br />
<br />
BOOL InitiateWindow()<br />
{<br />
	WNDCLASSEX WndClass;<br />
<br />
	WndClass.cbClsExtra		= 0;<br />
	WndClass.cbSize			= sizeof(WndClass);<br />
	WndClass.cbWndExtra		= NULL;<br />
	WndClass.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);<br />
	WndClass.hCursor		= LoadCursor(g_hInst, IDC_ARROW);<br />
	WndClass.hIcon			= LoadIcon(g_hInst, IDI_APPLICATION);<br />
	WndClass.hIconSm		= LoadIcon(g_hInst, IDI_APPLICATION);<br />
	WndClass.hInstance		= g_hInst;<br />
	WndClass.lpfnWndProc	= WndProc;<br />
	WndClass.lpszClassName	= CLASS_NAME;<br />
	WndClass.lpszMenuName	= NULL;<br />
	WndClass.style			= CS_HREDRAW|CS_VREDRAW;<br />
	<br />
	return RegisterClassEx(&WndClass);<br />
}<br />
<br />
BOOL InitiateDD()<br />
{<br />
	DDSURFACEDESC2 ddsd;<br />
	DDSCAPS2 ddscaps;<br />
<br />
	int ddrval = DirectDrawCreateEx(NULL, (VOID**)&g_pDD, IID_IDirectDraw7,<br />
		NULL);<br />
<br />
	if(ddrval != DD_OK)<br />
		return -1;<br />
<br />
    ddrval = g_pDD->SetCooperativeLevel(g_hWnd, DDSCL_EXCLUSIVE|<br />
		DDSCL_FULLSCREEN);<br />
<br />
	if(ddrval != DD_OK)<br />
		return -2;<br />
    <br />
	ddrval = g_pDD->SetDisplayMode(1024, 768, 32, 0, 0);<br />
<br />
	if(ddrval != DD_OK)<br />
		return -3;<br />
<br />
	ZeroMemory(&ddsd, sizeof(ddsd));<br />
	ddsd.dwSize			= sizeof(ddsd);<br />
	ddsd.dwFlags		= DDSD_CAPS | DDSD_BACKBUFFERCOUNT;<br />
	ddsd.ddsCaps.dwCaps	= DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP |<br />
      DDSCAPS_COMPLEX;<br />
	ddsd.dwBackBufferCount	= 1;<br />
<br />
	ddrval = g_pDD->CreateSurface(&ddsd, &g_lpDDSPrimary, NULL);<br />
<br />
	if(ddrval != DD_OK)<br />
		return -4;<br />
<br />
	ZeroMemory(&ddscaps, sizeof(ddscaps));<br />
	ddscaps.dwCaps	= DDSCAPS_BACKBUFFER;<br />
	ddrval = g_lpDDSPrimary->GetAttachedSurface(&ddscaps, &g_lpDDSBack);<br />
<br />
	if(ddrval != DD_OK)<br />
		return -5;<br />
<br />
	return true;<br />
}<br />
<br />
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam,<br />
						 LPARAM lParam)<br />
{<br />
	HDC hdc;<br />
	PAINTSTRUCT ps;<br />
<br />
	switch(iMsg)<br />
	{<br />
	case WM_PAINT:<br />
		{<br />
		        hdc = BeginPaint(hWnd, &ps);<br />
			EndPaint(hWnd, &ps);<br />
		}<br />
		break;<br />
	case WM_QUIT:<br />
	case WM_DESTROY:<br />
		PostQuitMessage(0);<br />
	}<br />
<br />
	return DefWindowProc(hWnd, iMsg, wParam, lParam);<br />
}<br />
<br />
void ProcessIdle()<br />
{<br />
	HBITMAP hbm;<br />
	HDC hdc;<br />
	HDC hdc_bmp;<br />
<br />
	g_lpDDSPrimary->GetDC(&hdc);<br />
	hdc_bmp = CreateCompatibleDC(NULL);<br />
<br />
	hbm = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BITMAP1));<br />
	SelectObject(hdc_bmp,hbm);<br />
	BitBlt(hdc,0,0,72,72,hdc_bmp,0,0,SRCCOPY);<br />
}<br />
<br />
void CleanUp()<br />
{<br />
	if(g_lpDDSBack)<br />
		g_lpDDSBack->Release();<br />
	if(g_lpDDSPrimary)<br />
		g_lpDDSPrimary->Release();<br />
	if(g_pDD)<br />
		g_pDD->Release();<br />
}

GeneralProblem solved Pin
SuperTank2-May-05 6:21
SuperTank2-May-05 6:21 
QuestionHow to execute a EXE remotely Pin
Killer32-May-05 4:23
Killer32-May-05 4:23 
AnswerRe: How to execute a EXE remotely Pin
ThomasABBE2-May-05 12:13
ThomasABBE2-May-05 12:13 
GeneralC++ and Word2003 Pin
perle12-May-05 4:15
perle12-May-05 4:15 
Generalbinary file i/o Pin
triplefour2-May-05 3:51
triplefour2-May-05 3:51 
GeneralRe: binary file i/o Pin
Anonymous2-May-05 4:28
Anonymous2-May-05 4:28 
GeneralRemote Shutdown using Named Pipe Pin
Girish6012-May-05 3:19
Girish6012-May-05 3:19 
QuestionHow to run an application when clicking &quot;Shut Down&quot; from start menu? Pin
jahfer2-May-05 3:08
jahfer2-May-05 3:08 
AnswerRe: How to run an application when clicking "Shut Down" from start menu? Pin
David Crow2-May-05 7:32
David Crow2-May-05 7:32 
GeneralRe: How to run an application when clicking &quot;Shut Down&quot; from start menu? Pin
r i s h a b h s3-May-05 0:05
r i s h a b h s3-May-05 0:05 
GeneralRe: How to run an application when clicking &quot;Shut Down&quot; from start menu? Pin
David Crow3-May-05 3:55
David Crow3-May-05 3:55 
GeneralActiveX (Formula 1) Grid , Cell value (date ) Problem Pin
zahid_ash2-May-05 2:29
zahid_ash2-May-05 2:29 
GeneralAccelerator doesnt work Pin
DKT_2-May-05 2:09
DKT_2-May-05 2:09 
GeneralC++ Help Pin
Rob_BCFC2-May-05 2:07
sussRob_BCFC2-May-05 2:07 
GeneralRe: C++ Help Pin
Rob_BCFC2-May-05 2:08
sussRob_BCFC2-May-05 2:08 
GeneralRe: C++ Help Pin
David Crow2-May-05 2:10
David Crow2-May-05 2:10 
GeneralRe: C++ Help Pin
Rob_BCFC2-May-05 2:14
sussRob_BCFC2-May-05 2:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.