#include <iostream>
using namespace std;
#include <ddraw.h>
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "Dxguid.lib")
LRESULT CALLBACK WndProc( HWND hWnd, // handle to window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
HWND hwnd;
void InitWindows(HINSTANCE hInstance)
{
MSG msg;
TCHAR lpszClassName[] = TEXT("kuan");
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = ::LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = ::LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)::GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = lpszClassName;
RegisterClass(&wc);
// WS_OVERLAPPEDWINDOW 可以改变窗口大小
// WS_OVERLAPPED 不可以改变窗口大小
// WS_POPUP 全屏
hwnd = CreateWindow(lpszClassName,
TEXT("fangyukuan"),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,80,100,800,600,
NULL,
NULL,
hInstance,
NULL);
/* while(TRUE)
{
if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}*/
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
InitWindows( hInstance);
LPDIRECTDRAW pDD = NULL;
HRESULT hr;
// Create a DirectDraw object using the enumerated GUID
if( FAILED( hr = DirectDrawCreate( NULL, &pDD, NULL ) ) )//IID_IDirectDraw7,
{
MessageBox(NULL,"DirectDraw Create Error","Wrong!", MB_OK);
return 0;
}
LPDIRECTDRAW7 lpDDraw7;
if(FAILED(pDD->QueryInterface(IID_IDirectDraw7,(LPVOID*)&lpDDraw7)))
{
MessageBox(NULL,"IID_IDirectDraw7 Create Error","Wrong!", MB_OK);
return 0;
}
if(FAILED(lpDDraw7->SetCooperativeLevel(hwnd, DDSCL_FULLSCREEN|DDSCL_ALLOWMODEX|DDSCL_EXCLUSIVE|DDSCL_ALLOWREBOOT)))
{
MessageBox(NULL,"SetCooperativeLevel Create Error","Wrong!", MB_OK);
return 0;
}
if(FAILED(lpDDraw7->SetDisplayMode(80,100,800,600,0)));
{
MessageBox(NULL,"SetDisplayMode Create Error","Wrong!", MB_OK);
return 0;
}
}
LRESULT CALLBACK WndProc( HWND hWnd,UINT Msg,WPARAM wParam, LPARAM lParam )
{
switch(Msg)
{
case WM_LBUTTONDOWN:
{
::MessageBeep(MB_ICONHAND);
}
break;
case WM_DESTROY:
::PostQuitMessage(0);
break;
default:
return ::DefWindowProc(hWnd,Msg,wParam,lParam);
}
return 0;
}