from:http://blog.csdn.net/leolee82/article/details/6992615
windows编程 全屏窗口的创建总结
第一种:较简单的方法
在ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);前加如下代码:
LONG style = GetWindowLong(hwnd,GWL_STYLE);//获得窗口风格 style = &~WS_CAPTION & ~WS_SIZEBOX;//窗口全屏显示且不可改变大小 SetWindowLong(hwnd,GWL_STYLE,style); //设置窗口风格 int screenX = GetSystemMetrics(SM_CXSCREEN);//获取整个屏幕右下角X坐标 int screenY = GetSystemMetrics(SM_CYSCREEN);//屏幕Y坐标 SetWindowPos(hwnd, NULL,0,0,screenX,screenY,SWP_NOZORDER);//改变窗口位置、尺寸和Z序 ShowCursor(FALSE);//显示时隐藏鼠标
第二种:在按下esc后实现全屏
switch (message) { case WM_KEYDOWN: switch(wParam) { case VK_ESCAPE: { HWND hDesk; RECT rc; hDesk = GetDesktopWindow(); GetWindowRect( hDesk, &rc ); SetWindowLong( hWnd, GWL_STYLE, WS_BORDER ); SetWindowPos( hWnd, HWND_TOPMOST,0,0, rc.right, rc.bottom, SWP_SHOWWINDOW); } break; } return 0; }
第三种:在消息中加入一下代码
static int cx, cy, cxDib, cyDib; hdc=::GetDC(NULL); switch (message) { case WM_CREATE: cx = GetDeviceCaps(hdc,HORZRES) + GetSystemMetrics(SM_CXBORDER); cy = GetDeviceCaps(hdc,VERTRES) + GetSystemMetrics(SM_CYBORDER); ::ReleaseDC(0,hdc); //去除标题和边框 SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) & (~(WS_CAPTION | WS_BORDER))); // 置对话框为最顶端并扩充到整个屏幕 ::SetWindowPos(hWnd, HWND_TOPMOST, -(GetSystemMetrics(SM_CXBORDER)+1), -(GetSystemMetrics(SM_CYBORDER)+1), +1,cy+1, SWP_NOZORDER); }以上几种方法需要注意的是在注册窗口类中的菜单项,如果不显示菜单就要把lpszMenuName设为null,否则会在全屏的窗口上显示菜单。