Win32 API GetLocalTime C version

原创 2004年10月11日 21:06:00

#include <windows.h>
#include <stdlib.h>  /* We are using malloc so this is needed */


LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "GetLocalTimeApp";

/* Our function prototypes */
/*-----------------------------------------------------------*/
int GetDayofweek(char *Dayofweek);
int GetLocalTimeHHMMSS(char *LocalTimeHHMMSS);
int GetLocalDateDMY(char *LocalDateDMY);
int GetLocalDateMDY(char *LocalDateMDY);
int GetLocalDateYMD(char *LocalDateYMD);
/*-----------------------------------------------------------*/

/* Some variables for use in testing the functions */
/*-----------------------------------------------------------*/
char *LocalDateDMY;
char *LocalDateMDY;
char *LocalDateYMD;
char *LocalTimeHHMMSS;
char *Dayofweek;
/*-----------------------------------------------------------*/


int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;              
    MSG messages;           
    WNDCLASSEX wincl;       

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;            
    wincl.cbSize = sizeof (WNDCLASSEX);

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;               
    wincl.cbClsExtra = 0;                
    wincl.cbWndExtra = 0; 
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    if (!RegisterClassEx (&wincl))
        return 0;

    hwnd = CreateWindowEx (
           0,                  
           szClassName,        
           "Using GetLocalTime Win32 API Version 1.0",      
           WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,      
           CW_USEDEFAULT,      
           350,                
           100,                
           HWND_DESKTOP,       
           NULL,               
           hThisInstance,      
           NULL                
           );

    ShowWindow (hwnd, nFunsterStil);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}


LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                
    {
        case WM_CREATE:
        /* Our tests begin here. */
        /*-----------------------------------------------------------*/
         LocalDateDMY = malloc(11);
         if ( GetLocalDateDMY(LocalDateDMY) > 0 )
          MessageBox(NULL, LocalDateDMY, "Date in DMY format", MB_OK);
         free(LocalDateDMY);
        
         LocalDateMDY = malloc(11);
         if ( GetLocalDateMDY(LocalDateMDY) > 0 )
          MessageBox(NULL, LocalDateMDY, "Date in MDY format", MB_OK);
         free(LocalDateMDY);
        
         LocalDateYMD = malloc(11);
         if ( GetLocalDateYMD(LocalDateYMD) > 0 )
          MessageBox(NULL, LocalDateYMD, "Date in YMD format", MB_OK);
         free(LocalDateYMD);
        
         LocalTimeHHMMSS = malloc(9);
         if ( GetLocalTimeHHMMSS(LocalTimeHHMMSS) > 0 )
          MessageBox(NULL, LocalTimeHHMMSS, "Time in 24 Hour format", MB_OK);
         free(LocalTimeHHMMSS);

         Dayofweek = malloc(2);
         if ( GetDayofweek(Dayofweek) > 0 )
          MessageBox(NULL, Dayofweek, "The week day is", MB_OK);
         free(Dayofweek);
         /* End of our tests */
         /*-----------------------------------------------------------*/
         return 0;
            break;
        case WM_DESTROY:
            PostQuitMessage (0);    
            break;
        default:                    
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

/* Our functions are defined here */
/*-----------------------------------------------------------*/
int GetDayofweek(char *Dayofweek)
{
SYSTEMTIME lpSystemTime;
char *lpDayofweekFmt = "%d";
char *bDayofweek;

    GetLocalTime(&lpSystemTime);
    
    if ( (bDayofweek = malloc(2)) != NULL) {
     wsprintf(bDayofweek, lpDayofweekFmt, lpSystemTime.wDayOfWeek);
        lstrcpy(Dayofweek, bDayofweek);
        free(bDayofweek);
    }
    else
     return -1;

}

/*-----------------------------------------------------------*/
int GetLocalTimeHHMMSS(char *LocalTimeHHMMSS)
{
SYSTEMTIME lpSystemTime;
char *lpTimeFmt = "%02d:%02d:%02d";
char *bTime;

    GetLocalTime(&lpSystemTime);
    if ( (bTime = malloc(9)) != NULL ) {
     wsprintf(bTime, lpTimeFmt,
                        lpSystemTime.wHour,
                        lpSystemTime.wMinute,
                        lpSystemTime.wSecond);
        lstrcpy(LocalTimeHHMMSS, bTime);
        free(bTime);
    }
    else
     return -1;   
}

/*-----------------------------------------------------------*/
int GetLocalDateDMY(char *LocalDateDMY)
{
SYSTEMTIME lpSystemTime;
char *lpDateFmt = "%02d/%02d/%02d";
char *bDateDMY;

    GetLocalTime(&lpSystemTime);
    if ( (bDateDMY = malloc(11)) != NULL ) {
     wsprintf(bDateDMY, lpDateFmt,
                           lpSystemTime.wDay,
                           lpSystemTime.wMonth,
                           lpSystemTime.wYear);
        lstrcpy(LocalDateDMY, bDateDMY);
        free(bDateDMY);
    }
    else
     return -1;        
}
/*-----------------------------------------------------------*/
int GetLocalDateMDY(char *LocalDateMDY)
{
SYSTEMTIME lpSystemTime;
char *lpDateFmt = "%02d/%02d/%02d";
char *bDateMDY;

    GetLocalTime(&lpSystemTime);
    if ( (bDateMDY = malloc(11)) != NULL) {
     wsprintf(bDateMDY, lpDateFmt,
                           lpSystemTime.wMonth,
                           lpSystemTime.wDay,
                           lpSystemTime.wYear);
        lstrcpy(LocalDateMDY, bDateMDY);
        free(bDateMDY);
     }
     else
      return -1;  
}

/*-----------------------------------------------------------*/
int GetLocalDateYMD(char *LocalDateYMD)
{
SYSTEMTIME lpSystemTime;
char *lpDateFmt = "%02d/%02d/%02d";
char *bDateYMD;

    GetLocalTime(&lpSystemTime);
    if ( (bDateYMD = malloc(11)) != NULL) {
     wsprintf(bDateYMD, lpDateFmt,
                           lpSystemTime.wYear,
                           lpSystemTime.wMonth,
                           lpSystemTime.wDay);
        lstrcpy(LocalDateYMD, bDateYMD);
        free(bDateYMD);
    }
    else
     return -1;   

}
/*-----------------------------------------------------------*/
/* end of file */

让你提前认识软件开发(11):localtime与GetLocalTime

第1部分 重新认识C语言 localtime与GetLocalTime   【文章摘要】         在C语言中,有两个获取当前时间的函数:localtime和GetLocalTime。它们在诸如...
  • zhouzxi
  • zhouzxi
  • 2014年04月09日 20:03
  • 3019

C语言获取系统时间 & 精度

C语言获取当前系统时间的几种方式 C语言获取系统时间的几种方式 C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒 2 使用clock_...
  • CLP_CSDNID
  • CLP_CSDNID
  • 2016年05月24日 14:46
  • 2992

获取不同精度的时间

转:http://blog.sina.com.cn/s/blog_4b7fad7a0100wj60.html C语言获取当前系统时间的几种方式 C语言获取系统时间的几种方式 C语...
  • yaofengyaofeng
  • yaofengyaofeng
  • 2017年07月16日 00:50
  • 221

Win32环境下代码注入与API钩子的实现

Win32环境下代码注入与API钩子的实现 本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理...
  • autumn20080101
  • autumn20080101
  • 2016年03月20日 22:29
  • 392

重温WIN32 API ------ 最简单的Windows窗口封装类

如果你也厌倦了复杂的MFC,这里提供了一个非常简单的把C++类、对象与窗口类、对象联系起来的方式。...
  • smstong
  • smstong
  • 2015年01月04日 17:14
  • 11410

跟我一起玩Win32开发(2):完整的开发流程

上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上...
  • tcjiaan
  • tcjiaan
  • 2013年01月13日 16:26
  • 84087

Windows编程 Win32API中常见的数据类型

Win32API有一套和C\C++基本数据类型不同的数据类型. C\C++语言的数据类型有如下几个缺陷: 数据类型平台相关,在不同平台上,同一个数据类型可能占用不同的空间大小。典型的,在16位系...
  • RitMan
  • RitMan
  • 2015年12月31日 15:20
  • 2343

如何使用纯win32函数和C语言实现一个简单的文本编辑器

一、引言在学习小甲鱼老师的Win32 SDK编程的教程的时候,当学到了第35课“插入符号”这课的时候,看到了这个源代码,我实在难掩心头的激动之情。是啊!这不就是一个用纯win32函数和C语言实现的一个...
  • u012814856
  • u012814856
  • 2017年04月11日 23:37
  • 3096

揭示Win32 API拦截细节

原文出处:http://www.codeproject.com/system/hooksys.asp 简要介绍 拦截win32 API 调用对于多数windows开发人员来说都一直是很有挑...
  • Steven6977
  • Steven6977
  • 2013年09月03日 13:28
  • 2767

利用键盘事件keybd_event(Win32 API)模拟键盘按键

云平台第三次重置后,通过FTP传输文件的途径失效,因此需要其他方法向自己的云桌面发送代码。无论云桌面怎么设置,都必须支持接收键盘和鼠标的输入,因此如果可以模拟键盘输入,就可以实现发送代码的功能。 Wi...
  • qq_21153991
  • qq_21153991
  • 2016年07月01日 11:09
  • 6333
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Win32 API GetLocalTime C version
举报原因:
原因补充:

(最多只允许输入30个字)