#include <windows.h>
#include <time.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
        
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
        
                   PSTR szCmdLine, int iCmdShow)//HINSTANCE执行实体(程序自身)句柄
        
{
//用于WinMain的第三个参数的PSTR数据型态是指向一个字符串的指针,即是一个char *
        
    static TCHAR szAppName[] = TEXT ("HelloWin") ;
        
    HWND   hwnd ;//窗口句柄        
    MSG    msg ;//消息结构
        
    WNDCLASS wndclass ;//窗口类别结构
      
/////////////////
   wndclass.style        = CS_HREDRAW | CS_VREDRAW ;//每当窗口的水平方向大小(CS_HREDRAW)或者垂直方向大小(CS_VREDRAW)改变之后,窗口要完全重画
        
   wndclass.lpfnWndProc  = WndProc ;//第二个字段(lpfnWndProc) 
   //是依据这个类别来建立的所有窗口所使用的窗口消息处理程序的地址。
   //在HELLOWIN.C中,这个是WndProc函数
        
    wndclass.cbClsExtra   = 0 ;//用于在窗口类别结构中预留一些额外空间
        
    wndclass.cbWndExtra   = 0 ;//用于在Windows内部保存的窗口结构中预留一些额外空间
        
    wndclass.hInstance    = hInstance ;
    //wndclass.hInstance 就是程序的执行实体句柄(它也是WinMain的参数之一)        
    wndclass.hIcon        = LoadIcon (NULL, IDI_APPLICATION) ;//LoadIcon 加载图标供程序使用。HICON(图标句柄)
   //wndclass.hIcon 要取得预先定义图示的句柄,可以将第一个参数设定为NULL来呼叫LoadIcon。在加载程序写作者自订的图标时(图标应该存放在磁盘上的.EXE程序文件中),这个参数应该被设定为程序的执行实体句柄hInstance。     
   //NULL-->hInstance   wndclass.hCursor      = LoadCursor (NULL, IDC_ARROW) ;//LoadCursor 加载鼠标光标供程序使用,   wndclass.hCursor      = LoadCursor (NULL, IDC_ARROW) ;//LoadCursor 加载鼠标光标供程序使用,HCURSOR(鼠标光标句柄)
    //LoadCursor函数加载一个预先定义的鼠标光标(命名为IDC_ARROW),并传回该游标的句柄。该句柄被设定给WNDCLASS结构的hCursor字段。当鼠标光标在依据这个类别建立的窗口的显示区域上出现时,它变成一个小箭头。
    wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;//GetStockObject 取得一个图形对象(在这个例子中,是取得绘制窗口背景的画刷对象)。HBRUSH(画刷句柄)
        
   wndclass.lpszMenuName  = NULL ;
        
    wndclass.lpszClassName= szAppName ;//窗口类别的文字名称
////////////////////初始化该结构的10个字段    if (!RegisterClass (&wndclass))//RegisterClass 为程序窗口注册窗口类别。
        
    {//RegisterClass有一个参数,是一个指向型态为WNDCLASS的结构指针
        
            MessageBox (  NULL, TEXT ("This program requires Windows XP!"),
        
                                  szAppName, MB_ICONERROR) ;//??MB_ICONERROR
        
            return 0 ;
        
    }
        
    hwnd = CreateWindow( szAppName,// window class name ,CreateWindow 根据窗口类别建立一个窗口
        
               TEXT ("关机定时器"),   // window caption
        
               WS_OVERLAPPEDWINDOW,  // window style
        
               CW_USEDEFAULT,// initial x position
        
               CW_USEDEFAULT,// initial y position
        
               CW_USEDEFAULT,// initial x size
        
               CW_USEDEFAULT,// initial y size
        
               NULL,                 // parent window handle
        
               NULL,            // window menu handle
        
               hInstance,   // program instance handle
        
               NULL) ;      // creation parameters//规定,限定要素
        
        
    ShowWindow (hwnd, iCmdShow) ;//ShowWindow 在屏幕上显示窗口。
        
    UpdateWindow (hwnd) ;//UpdateWindow 指示窗口自我更新。        
   
        
    while (GetMessage (&msg, NULL, 0, 0))//GetMessage 从消息队列中取得消息。//参数???
        
    {
        
            TranslateMessage (&msg) ;//TranslateMessage 转译某些键盘消息
        
            DispatchMessage (&msg) ;//DispatchMessage 将消息发送给窗口消息处理程序。        
    }
        
    return msg.wParam ;
        
}
        
//WndProc函数传回一个型态为LRESULT的值,该值简单地被定义为一个LONG
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)//窗口消息处理程序
        
{//UINT message是32位的值
        //在32位的Windows中,WPARAM被定义为一个UINT
//LPARAM被定义为一个LONG(这就是C中的long整数型态),因此窗口消息处理程序的这两个参数都是32位的值
    HDC                   hdc ;//设备内容句柄        
    PAINTSTRUCT ps ;//绘图结构
        
    RECT          rect ;//矩形结构 
        
    switch (message)
    {
        
    case WM_CREATE:
        
       // PlaySound (TEXT ("关机提示.wav"), NULL, SND_FILENAME | SND_ASYNC) ;//修改
        
            return 0 ;
    case   WM_PAINT:
            time_t t;
          time(&t); 
            hdc = BeginPaint (hwnd, &ps) ;//BeginPaint 开始绘制窗口
                           GetClientRect (hwnd, &rect) ;//GetClientRect 取得窗口显示区域的大小
             DrawText (hdc, TEXT(ctime(&t)), -1, &rect,
        
                   DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;//DrawText 显示字符串
        
                 EndPaint (hwnd, &ps) ;//EndPaint 结束绘制窗口
        
                   return 0 ;
        
        
        
    case   WM_DESTROY:
        
            PostQuitMessage (0) ;//PostQuitMessage 在消息队列中插入一个「退出程序」消息
        
            return 0 ;
        
    }
        
  return DefWindowProc (hwnd, message, wParam, lParam) ;//DefWindowProc 执行内定的消息处理
        
}/*
我想实现显示系统时间的功能,但有个错误,有个错误:
D:\C语言\自动关机\1.cpp(143) : error C2018: unknown character '0xa1'
D:\C语言\自动关机\1.cpp(143) : error C2018: unknown character '0xa1'
D:\C语言\自动关机\1.cpp(143) : error C2018: unknown character '0xa1'
D:\C语言\自动关机\1.cpp(143) : error C2018: unknown character '0xa1'
错误指向    case   WM_PAINT:的   time(&t); 这条语句
能帮忙看看码??
(代码是手动打得,不是粘贴的)
*/