简单全屏程序

代码下载
知识准备:
WS_POPUP:不显示窗口客户区,只显示在任务栏上,不见窗口,右击任务栏上的窗口也没有系统菜单
WS_SYSMENU:负责是否显示右击时的菜单
WS_MAXIMIZEBOX:最大化按钮
WS_MINIMIZEBOX:最大化按钮

MoveWindow和SetWindowPos的区别:
当从全屏回来时,如果使用SetWindowPos,那么原来被程序覆盖的部分不会更新!
相同:同样可以改变窗口的大小 

 

#include  < windows.h >
#include 
< windowsx.h >
#include 
" resource.h "


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int  WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, 
int  iCmdShow)
{
     
static TCHAR szAppName[] = TEXT ("HelloWin") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
     HACCEL hAccel;
     BOOL bIsFullScreen;

     wndclass.style         
= CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   
= WndProc ;
     wndclass.cbClsExtra    
= 0 ;
     wndclass.cbWndExtra    
= 0 ;
     wndclass.hInstance     
= hInstance ;
     wndclass.hIcon         
= LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       
= LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground 
= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  
= NULL ;
     wndclass.lpszClassName 
= szAppName ;

     
if (!RegisterClass (&wndclass))
     
{
          MessageBox (NULL, TEXT (
"This program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ;
          
return 0 ;
     }

     
     hwnd 
= CreateWindow (szAppName,                  // window class name
                          TEXT ("The Hello Program"), // window caption
                          WS_POPUP+WS_SYSMENU+WS_BORDER,        // window style
                          CW_USEDEFAULT,              // initial x position
                          CW_USEDEFAULT,              // initial y position
                          GetSystemMetrics(SM_CXSCREEN),   // initial x size 
         GetSystemMetrics(SM_CYSCREEN),   // initial y size
                          NULL,                       // parent window handle
                          NULL,                       // window menu handle
                          hInstance,                  // program instance handle
                          NULL) ;                     // creation parameters
     bIsFullScreen = TRUE;
     SetWindowLong(hwnd,GWL_USERDATA,(LONG)bIsFullScreen);

     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
     
     hAccel 
=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCEL));

     
while (GetMessage (&msg, NULL, 00))
     
{
              
if(!TranslateAccelerator(hwnd,hAccel,&msg))
            
{
                 TranslateMessage (
&msg) ;
                 DispatchMessage (
&msg) ;
            }

     }

     
return msg.wParam ;
}



BOOL HelloWin_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
    
//PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
    return(TRUE);
}


void  HelloWin_OnCommand(HWND hwnd,  int  id, HWND hwndCtl, UINT codeNotify)
{
    BOOL bIsFullScreen;
    LONG lOldStyle;

    
switch(id)
    
{
    
case IDA_SMALL:
        bIsFullScreen
=(BOOL)GetWindowLong(hwnd,GWL_USERDATA);
        lOldStyle 
= GetWindowLong(hwnd,GWL_STYLE);         

        
if(bIsFullScreen)
        
{    
        SetWindowLong(hwnd,GWL_STYLE,
                                                                     lOldStyle
|WS_CAPTION|WS_MAXIMIZEBOX|WS_MINIMIZEBOX); 
        MoveWindow(hwnd,
100,100,
                                                                 
800,600,TRUE);
        bIsFullScreen 
= FALSE;
        SetWindowLong(hwnd,GWL_USERDATA,(LONG)bIsFullScreen);
        }

        
else
        
{
        lOldStyle
&=~WS_CAPTION;//只要取消这个就行了
        SetWindowLong(hwnd,GWL_STYLE,lOldStyle);
        MoveWindow(hwnd,
                               
0,0,
            GetSystemMetrics(SM_CXSCREEN),
            GetSystemMetrics(SM_CYSCREEN),
            TRUE);
            
        bIsFullScreen 
= TRUE;
        SetWindowLong(hwnd,GWL_USERDATA,(LONG)bIsFullScreen);
        }

        
break;
    }

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;
     
     
switch (message)
     
{
        HANDLE_MSG(hwnd,WM_CREATE,HelloWin_OnCreate);
       HANDLE_MSG(hwnd,WM_COMMAND,HelloWin_OnCommand);
     
case WM_PAINT:
          hdc 
= BeginPaint (hwnd, &ps) ;
          
          GetClientRect (hwnd, 
&rect) ;
          
          DrawText (hdc, TEXT (
"Hello, Windows 98!"), -1&rect,
                    DT_SINGLELINE 
| DT_CENTER | DT_VCENTER) ;
          
          EndPaint (hwnd, 
&ps) ;
          
return 0 ;
            
     
case WM_DESTROY:
          PostQuitMessage (
0) ;
          
return 0 ;
     }

     
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值