c语言运行窗口显示时间日期,Windows窗口中显示当前日期时间

#include

#include

#include

#include //使用_sprintf格式化需要

static TCHAR szText[] = TEXT("欢迎欢迎");

HWND hwnd;

static TCHAR times[32];

void GetSysTime(){

time_t tt = time(NULL);

tm* t = localtime(&tt);

_stprintf(times,"%d-%02d-%02d %02d:%02d:%02d",

t->tm_year+1900,

t->tm_mon+1,

t->tm_mday,

t->tm_hour,

t->tm_min,

t->tm_sec);

printf("%02d\n",t->tm_sec);

}

void CALLBACK TimerProc(HWND hwnd, UINT uMsg,UINT idEvent,DWORD dwTime){

//printf("entertimerproc \n");

//PostMessage(hwnd,WM_PAINT,0,0);

//GetSysTime();

}

/处理消息函数

CALLBACK 即 stdcall 即WIN API调用约定

另cdecl C语言调用约定/

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {

HDC hdc; /设备环境句柄/

PAINTSTRUCT ps; /* 存储绘图环境的相关信息 */

switch(Message) {

case WM_CREATE:{

//SetTimer(NULL,100,1000,TimerProc);

SetTimer(hwnd, 100,1000,NULL);

break;

}

/* 窗口关闭销毁消息 */

case WM_DESTROY: {

KillTimer(hwnd,100);

PostQuitMessage(0); /* 发送WM_QUIT消息 */

break;

}

case WM_TIMER:{

//printf("TIME message\n");

RECT rect;

GetClientRect(hwnd,&rect);

InvalidateRect(hwnd,&rect,true); //窗口失效重绘

break;

}

case WM_PAINT:{

//printf("repaint");

hdc = BeginPaint(hwnd,&ps); /* 开始绘图并返回环境句柄 */

GetSysTime();

//TextOut(hdc,50,50,szText,_tcslen(szText));

TextOut(hdc,50,50,times,_tcslen(times)); //输出文字

EndPaint(hwnd,&ps); /*结束绘图并释放环境句柄*/

break;

}

/* 默认处理消息 */

default:

return DefWindowProc(hwnd, Message, wParam, lParam);

}

return 0;

}

/Windows应用程序入口/

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

AllocConsole();

freopen("CONOUT$","w",stdout);

WNDCLASSEX wc; /* 窗口类对象 */

//HWND hwnd; /* 窗口句柄 */

MSG msg; /* 消息结构体对象 */

static TCHAR szAppName[] = TEXT("WindowClass"); /* 使用TCHAR和TEXT宏可以自动适应UNICODE和ASCII字符串,如果是UNICODE设置则是宽字符串,反之是ASCII字符串*/

/* 初始化窗口类对象 */

memset(&wc,0,sizeof(wc));

/* 或者用下面初始化结构体对象 */

/* WNDCLASSEX wc = {}; */

wc.cbSize = sizeof(WNDCLASSEX);

wc.lpfnWndProc = WndProc; /* 消息回调函数指针 */

wc.hInstance = hInstance;

wc.hCursor = LoadCursor(NULL, IDC_ARROW); /* 鼠标光标句柄 */

wc.style = CS_HREDRAW | CS_VREDRAW; /* 窗口类风格,水平或垂直移动刷新窗口 */

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); /* 窗口背景画刷,设置为白色 */

wc.lpszClassName = szAppName; /* 窗口类的名称 */

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* 应用程序图标句柄 */

wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); /* 窗口标题栏图标句柄 */

if(!RegisterClassEx(&wc)) {

MessageBox(NULL, TEXT("窗口注册失败!"),TEXT("错误!"),MB_ICONEXCLAMATION|MB_OK);

return 0;

}

/*

CreateWindowEx函数作用是创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口。

其函数声明如下:

HWND CreateWindowEx(

DWORD dwExStyle, //窗口的扩展风格

LPCTSTR lpClassName, //已经注册的窗口类名称

LPCTSTR lpWindowName, //窗口标题栏的名字

DWORD dwStyle, //窗口的基本风格

int x, //窗口左上角水平坐标位置

int y, //窗口左上角垂直坐标位置

int nWidth, //窗口的宽度

int nHeight, //窗口的高度

HWND hWndParent, //窗口的父窗口句柄

HMENU hMenu, //窗口菜单句柄

HINSTANCE hInstance, //应用程序实例句柄

LPVOID lpParam, //窗口创建时附加参数

); //创建成功返回窗口句柄

*/

hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, /* 指定窗口有一个带阴影的边界 */

szAppName, /* 注册的窗口类名 */

TEXT("Dev窗口"), /* 窗口标题 */

WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, /* 窗口风格具有水平与垂直滚动条 */

CW_USEDEFAULT, /* x */

CW_USEDEFAULT, /* y */

640, /* 宽 */

480, /* 高 */

NULL, /* 父窗口句柄 */

NULL, /* 菜单或子窗口句柄 */

hInstance, /* 应用程序实例句柄 */

NULL); /* 附加数据 */

if(hwnd == NULL) {

MessageBox(NULL, TEXT("窗口创建失败!"),TEXT("错误!"),MB_ICONEXCLAMATION|MB_OK); /* 带感叹号图标消息框 */

return 0;

}

ShowWindow(hwnd,SW_SHOW); /* 显示窗口 */

UpdateWindow(hwnd); /* 发送WM_PAINT消息 */

/*

消息循环

*/

while(GetMessage(&msg, NULL, 0, 0) > 0) { /* 如收到WM_QUIT消息GetMessage返回0,退出消息循环 */

TranslateMessage(&msg); /* 转化按键消息为WM_CHAR消息 */

DispatchMessage(&msg); /* 将消息传给窗口回调函数处理 */

}

return msg.wParam;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值