This commit is contained in:
wujiahao17 2024-08-20 20:06:46 +08:00
parent ec2be17951
commit ba26732f7a
10 changed files with 1482 additions and 1274 deletions

View File

@ -0,0 +1,185 @@
//这段程序是一个时钟
//
//
#include "stdint.h"
#include "stddef.h"
#include "stdio.h"
#include "gdd.h"
#include "gdd_button.h"
#include "wjh_window.h"
// 用于存放按钮hwnd
HWND timeclock[8];
HWND clock_window = NULL;
//定义按钮名字
u8 buttontime[8][20] = {"hour1", "hour2", "colon1", "minute1", "minute2", "colon2", "second1", "second2"};
//图片名称,不可更改
u8 timename[10][20] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
//初始化时间
u32 hour_t = 0;
u32 minute_t = 59;
u32 second_t = 50;
u32 C_flag = 0;
struct WinTimer* c_timer;
enum {
C_Clock,
C_Timer,
};
static bool_t main_window_paint(struct WindowMsg *pMsg) {
HWND hwnd = pMsg->hwnd;
if (hwnd == NULL) return false;
HDC hdc = GDD_BeginPaint(hwnd);
GDD_SetBackGroundColor(hdc, RGB(8,24,58));
GDD_CleanClient(hdc);
GDD_EndPaint(hwnd, hdc); // 结束绘制并刷新
return true;
}
static bool_t button_paint(struct WindowMsg *pMsg) {
u8* data;
HWND hwnd;
HDC hdc;
if(pMsg==NULL)
return false;
hwnd = pMsg -> hwnd;
if(hwnd ==NULL) return false;
hdc = GDD_BeginPaint(hwnd);
// struct RopGroup ropgroup = GDD_GetRopCode(hdc);
// ropgroup.HyalineEn = 1;
// GDD_SetRopCode(hwnd, ropgroup);
// GDD_SetWindowHyalineColor(hwnd, RGB(8,24,58));
// Set the background image for the window
wjh_setBackBmp(hwnd, wjh_Search_ClockBMP("colon"));
GDD_EndPaint(hwnd, hdc); // 结束绘制并刷新
return true;
}
static bool_t timer_paint(struct WindowMsg *pMsg) {
u8* data;
HWND hwnd;
HDC hdc;
if(pMsg==NULL)
return false;
hwnd = pMsg -> hwnd;
if(hwnd ==NULL) return false;
hdc = GDD_BeginPaint(hwnd);
//根据时间调整图片
wjh_setBackBmp(timeclock[0], wjh_Search_ClockBMP(timename[hour_t/10]));
wjh_setBackBmp(timeclock[1], wjh_Search_ClockBMP(timename[hour_t%10]));
wjh_setBackBmp(timeclock[3], wjh_Search_ClockBMP(timename[minute_t/10]));
wjh_setBackBmp(timeclock[4], wjh_Search_ClockBMP(timename[minute_t%10]));
wjh_setBackBmp(timeclock[6], wjh_Search_ClockBMP(timename[second_t/10]));
wjh_setBackBmp(timeclock[7], wjh_Search_ClockBMP(timename[second_t%10]));
if(C_flag == C_Clock){
second_t = second_t + 1;
if(second_t==60){
second_t = 0;
minute_t = minute_t + 1;
}
if(minute_t==60){
minute_t = 0;
hour_t = hour_t + 1;
}
if(hour_t==24){
hour_t = 0;
}
}else if(C_flag == C_Timer){
if(second_t==0&&minute_t == 0&&hour_t==0){
GDD_StopTimer(c_timer);
}
if(second_t==0&&!(minute_t == 0&&hour_t == 0)){
second_t = 60;
if(minute_t == 0 && hour_t != 0){
minute_t = 60;
hour_t -= 1;
}
minute_t -= 1;
}
second_t -= 1;
}
GDD_EndPaint(hwnd, hdc); // 结束绘制并刷新
return true;
}
void create_TimerControl(){
if(clock_window!=NULL){
hour_t = 1;
minute_t = 1;
second_t = 0;
C_flag = C_Timer;
GDD_PostMessage(clock_window, MSG_TIMER, 0, NULL);
}
}
void start_timer(){
if(clock_window!=NULL)
GDD_StartTimer(c_timer);
}
void pause_timer(){
if(clock_window!=NULL)
GDD_StopTimer(c_timer);
}
void Del_ClockControl(){
if(clock_window!=NULL){
GDD_DestroyWindow(clock_window);
clock_window = NULL;
u32 hour_t = 0;
u32 minute_t = 59;
u32 second_t = 50;
}
}
void correct_ClockControl(){
hour_t = 0;
minute_t = 59;
second_t = 50;
GDD_StartTimer(c_timer);
}
// Main function
HWND wjh_GetClockControl(HWND hwnd, u32 x, u32 y)
{
// Enable the screen backlight
// Lcd_BackLight_OnOff(1);
// Create the navigation bar window
// if(clock_window == NULL){
C_flag = C_Clock;
clock_window = wjh_createWindow(
"clock_window", x, y, 340, 70, CN_WINBUF_PARENT, 0, CN_SYS_PF_DISPLAY,
RGB(1, 1, 1), hwnd, main_window_paint, NULL
);
//创建按钮
for(int i = 0; i < 8; i++){
timeclock[i] = wjh_createButton(buttontime[i], BS_NORMAL | WS_UNFILL, 12+i*40, 5, 40, 60, clock_window, button_paint, NULL);
// HDC hdc = GDD_BeginPaint(timeclock[i]);
// struct RopGroup ropgroup = GDD_GetRopCode(hdc);
// ropgroup.HyalineEn = 1;
// GDD_SetRopCode(timeclock[i], ropgroup);
// GDD_SetWindowHyalineColor(hwnd, RGB(8,24,58));
// GDD_EndPaint(timeclock[i], hdc);
}
//给main窗口创建一个计时器的timer事件
wjh_setTimer(clock_window,timer_paint);
//创建计时器
c_timer = GDD_CreateTimer(clock_window,0,1000);
//计时器开始执行
GDD_StartTimer(c_timer);
return clock_window;
// }else{
// correct_ClockControl();
// }
// return NULL;
}

View File

@ -0,0 +1,23 @@
/*
* wjh_ClockControl.h
*
* Created on: 2024Äê8ÔÂ6ÈÕ
* Author: LENOVO
*/
#ifndef APP_MODULE_WJH_CLOCKCONTROL_H_
#define APP_MODULE_WJH_CLOCKCONTROL_H_
#include "gdd.h"
HWND wjh_GetClockControl(HWND hwnd, u32 x, u32 y);
void Del_ClockControl();
void correct_ClockControl();
void pause_timer();
void start_timer();
void create_TimerControl();
#endif /* APP_MODULE_WJH_CLOCKCONTROL_H_ */