Re: Fullscreen app?
Hi Billy,
u go to Fullscreen with DirectX, if u will do it by GDI
u must test this Code, here is the Device propertys
directly changed. Use it Careful :-)
best regards
Karsten Schulz
--
(www.kahnsoft.de)
#define FULLSCREEN640X480 0x000000ff
#define FULLSCREEN800X600 0x0000ff00
#define FULLSCREEN1024X768 0x00ff0000
#define FULLSCREEN1280X1024 0xff000000
#define FULLSCREEN1600X1200 0xf0000000
DEVMODE m_original,m_mydev,m_tstdev;
//Eine neue Aufl?sung Erzeugen die alten ScreenDeviceDaten suchen und retten
bool CMessWindow::SetScreenMode(DWORD mode)
{
WORD width,height;CRect rc;
if(m_lastmode == mode)
return false;
if(!mode) //width == 0 restauriere das original device
{
SetRedraw(false);
SetPriorityClass(GetCurrentProcess(),NORMAL_PRIORITY_CLASS);
if(m_original.dmPelsWidth != 0)
ChangeDisplaySettings(&m_original,0);
//ALT+TAB freigeben
UnregisterHotKey(m_hWnd, 100);
if( m_pParent )
{
ModifyStyle(WS_POPUP,WS_CHILD|WS_DLGFRAME,true);
SetParent(m_pParent);
}
else
ModifyStyle(WS_POPUP,WS_DLGFRAME,true);
if( m_pParent )
m_pParent->SendMessage(WM_SIZING,-1,(LPARAM)&rc); //DynamicTab OnSize
Handler reagiert auf -1!!!
ShowHideTaskBar(true);
memset(&m_original,NULL,sizeof(m_original));
memset(&m_mydev,NULL,sizeof(m_mydev));
memset(&m_tstdev,NULL,sizeof(m_tstdev));
m_lastmode = mode;//NULL
SetRedraw(true);
OnSize(0,0,0);
return true;
}
if( mode == FULLSCREEN640X480)
width=640,height=480;
else
if( mode == FULLSCREEN800X600)
width=800,height=600;
else
if( mode == FULLSCREEN1024X768)
width=1024,height=768;
else
if( mode == FULLSCREEN1280X1024)
width=1280,height=1024;
else
if( mode == FULLSCREEN1600X1200)
width=1600,height=1200;
else
return false;
WORD w,b,h,z,serch=0;
HDC hdc = ::GetDC(0);
w=GetDeviceCaps(hdc,HORZRES);
h=GetDeviceCaps(hdc,VERTRES);
b=GetDeviceCaps(hdc,BITSPIXEL);
z=GetDeviceCaps(hdc,VREFRESH);
::ReleaseDC(0,hdc);
do //suche und finde das ist/soll grafikdevice modeinfo
{
if( !EnumDisplaySettings(0,serch++,&m_tstdev) )
break;
//erstemal ? dann default speichern
if(m_original.dmPelsWidth == 0)
{
if( m_tstdev.dmPelsWidth == w &&
m_tstdev.dmPelsHeight == h &&
m_tstdev.dmBitsPerPel == b )
memcpy((char *)&m_original,(char *)&m_tstdev,sizeof(DEVMODE));
m_original.dmDisplayFrequency = z; //Freq separat ?bernehmen
}
if( m_tstdev.dmPelsWidth == width &&
m_tstdev.dmPelsHeight == height &&
m_tstdev.dmBitsPerPel == b)//es wird nicht die h?chste sondern die
erstbeste Freq ?bernommen
memcpy((char *)&m_mydev,(char *)&m_tstdev,sizeof(DEVMODE));
}while(1);
SetRedraw(false);
ShowHideTaskBar(false);
ModifyStyle(WS_CAPTION|WS_POPUPWINDOW|WS_BORDER|WS_CHILD,WS_POPUP,true);
SetParent(0);
bool stat = (DISP_CHANGE_SUCCESSFUL == ChangeDisplaySettings(&m_mydev,0));
//ALT+TAB sperren
RegisterHotKey(m_hWnd,100,MOD_ALT, VK_TAB);
CRect
Myrc(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
MoveWindow(Myrc,true);
SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
m_lastmode = mode;
SetRedraw(true);
return stat;
}
...
"Billy Zhang" <htinns@noemail.noemail> schrieb im Newsbeitrag
news:86E7AB27-9596-4253-821D-6E3A4ACCD99E@microsoft.com...
I want to build a fullscreen application that the user could not use any
other application in windows, how to build this application?