I
habs inzwischen selbst geschafft:
#define WIN32_LEAN_AND_MEAN
#define WINDOW_CLASS_NAME L"Test05"
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code)&0x8000?1:0))
#define KEYUP(vk_code) ((GetAsyncKeyState(vk_code)&0x8000?0:1))
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <shellapi.h>
LOGFONT lf;
HWND main_window_handle = NULL;
HWND hWndEingabe =NULL;
HINSTANCE hinstance_app = NULL;
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam);
void WriteString(HWND hwnd,TCHAR*str,int x, int y,COLORREF Bk,COLORREF cText);
void SetDisplayMode(long lWidth, long lHeight, long lBPP)
{
RECT windowRect;
windowRect.top = 0;
windowRect.left = 0;
windowRect.bottom = 768;
windowRect.right = 1024;
DEVMODE dmScreenSettings;
memset(&dmScreenSettings,0,sizeof(dmScreenSettings));
dmScreenSettings.dmSize=sizeof(dmScreenSettings);
dmScreenSettings.dmPelsWidth = lWidth;
dmScreenSettings.dmPelsHeight = lHeight;
dmScreenSettings.dmBitsPerPel = lBPP;
dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN | CDS_RESET)!=DISP_CHANGE_SUCCESSFUL)
{
MessageBox(NULL,L"The requested mode is not supported!",L"Error",MB_OK);
}
AdjustWindowRectEx(&windowRect, WS_POPUP, FALSE, WS_EX_APPWINDOW);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASSEX wc;
HWND hwnd;
MSG msg;
DWORD dwExStyle, dwStyle;
int width=1024,height=768,bits=32;
bool done=FALSE;
RECT windowRect;
windowRect.top = 0;
windowRect.left = 0;
windowRect.bottom = height;
windowRect.right = width;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
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(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = L"OpenGL";
wc.hIconSm = LoadIcon(NULL,IDI_WINLOGO);
RegisterClassEx(&wc);
DEVMODE devModeScreen;
memset(&devModeScreen, 0,sizeof(devModeScreen));
devModeScreen.dmSize = sizeof(devModeScreen);
devModeScreen.dmPelsWidth = width;
devModeScreen.dmPelsHeight = height;
devModeScreen.dmBitsPerPel = bits;
devModeScreen.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
ChangeDisplaySettings(&devModeScreen, CDS_FULLSCREEN);
dwExStyle = WS_EX_APPWINDOW;
dwStyle = WS_POPUP;
ShowCursor(FALSE);
AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle);
hwnd=CreateWindowEx(dwExStyle,
L"OpenGL",
L"glwindow",
dwStyle | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
0,0,
windowRect.right - windowRect.left,
windowRect.bottom - windowRect.top,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
while(!done)
{
PeekMessage(&msg,NULL,0,0,PM_REMOVE);
if (msg.message==WM_QUIT)
{
done=TRUE;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (msg.wParam);
}
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (msg)
{
case WM_CREATE:
{
return(0);
}
break;
case WM_CHAR:
{
return(0);
}
break;
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return(0);
}
break;
case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
}
break;
case WM_LBUTTONDOWN:
{
return 0;
}
case WM_RBUTTONDOWN:
{
return 0;
}
default:
break;
}
return(DefWindowProc(hwnd,msg,wparam,lparam));
}
void WriteString(HWND hwnd,TCHAR*str,int x, int y,COLORREF Bk,COLORREF cText)
{
HFONT fnt;
HDC dc;
RECT r;
dc = GetDC(hwnd);
GetClientRect(hwnd,&r);
r.top=y;
r.left=x;
SetRect(&r,x,y,x+61,y+15);
SetBkColor(dc,Bk);
SetTextColor(dc,cText);
lf.lfHeight=15;
swprintf(lf.lfFaceName,L"Arial Unicode MS");
FillRect(dc,&r,(HBRUSH)GetStockObject(WHITE_BRUSH));
fnt = CreateFontIndirect(&lf);
SelectObject(dc, fnt);
DrawText(dc,str,-1,&r,0);
ReleaseDC(hwnd, dc);
DeleteObject(fnt);
}