#include "stdint.h" #include "stddef.h" #include "stdio.h" #include "gdd.h" #include "gdd_button.h" #include "wjh_window.h" #include "wjh_Graph.h" #include "page.h" // 调用头文件 u8 iconname3[][20] = {"address", "camera", "cart", "controller", "location", "music", "picture", "search", "time", "wifi", "table", "barchart"}; u32 iconflag3 = 0; // Button click and paint handlers static bool_t left_page_button_paint(struct WindowMsg *pMsg); static bool_t right_page_button_paint(struct WindowMsg *pMsg); static bool_t page_button_paint(struct WindowMsg *pMsg); static bool_t main_window_paint(struct WindowMsg *pMsg); static bool_t left_page_button_click(struct WindowMsg *pMsg); static bool_t right_page_button_click(struct WindowMsg *pMsg); // Implementation of the temperature graph page with side icon buttons HWND enter_to_page3() { // Create the main window (1024x600) HWND main_window = wjh_createWindow( "temperature_page_window", 0, 0, 1024, 600, CN_WINBUF_PARENT, 0, CN_SYS_PF_DISPLAY, RGB(255, 255, 255), GDD_GetDesktopWindow(NULL), main_window_paint, NULL ); // Create the left page button (50x50) wjh_createButton("left_page_button", BS_NORMAL | WS_UNFILL, 20, 275, 50, 50, main_window, left_page_button_paint, left_page_button_click); // Create the right page button (50x50) wjh_createButton("right_page_button", BS_NORMAL | WS_UNFILL, 954, 275, 50, 50, main_window, right_page_button_paint, right_page_button_click); // Generate temperature data for 10 days u8 x_labels[10][GRAPH_DATA_LEN_MAX]; u32 temp_values[10]; for (int i = 0; i < 10; ++i) { temp_values[i] = rand() % 30 + 15; // Random temperatures between 15 and 45 degrees sprintf(x_labels[i], "D.%d", i + 1); } // Create the graph window to display temperature data (600x400), centered horizontally HWND graph_window = wjh_Graph_Initialize( 212, 100, 600, 400, 10, x_labels, temp_values, main_window ); // // // Set the title of the graph wjh_Graph_SetTitle(graph_window, "10-Day Temperature Forecast"); // // // Set the graph to be a line chart wjh_Graph_SetShowMode(graph_window, GRAPH_LINE_CHART); // Adjusted positions for icon buttons (aligned to the sides of the graph) int icon_size = 90; // Button size adjusted to 90x90 int spacing_y = 40; // Vertical spacing between buttons int left_x = 100; // Left side for the left icon buttons int right_x = 824; // Right side for the right icon buttons int y_start = 130; // Position aligned to the graph's vertical position // Create 3 icon buttons on the left side of the graph for (int i = 0; i < 3; ++i) { char button_name[20]; sprintf(button_name, "left_icon_button_%d", i); wjh_createButton(button_name, BS_NORMAL | WS_UNFILL, left_x, y_start + i * (icon_size + spacing_y), icon_size, icon_size, main_window, page_button_paint, NULL); } // Create 3 icon buttons on the right side of the graph for (int i = 0; i < 3; ++i) { char button_name[20]; sprintf(button_name, "right_icon_button_%d", i); wjh_createButton(button_name, BS_NORMAL | WS_UNFILL, right_x, y_start + i * (icon_size + spacing_y), icon_size, icon_size, main_window, page_button_paint, NULL); } return main_window; } // Paint handlers for the main window static bool_t main_window_paint(struct WindowMsg *pMsg) { wjh_setBackBmp(pMsg->hwnd, wjh_Search_BMP("background1")); return true; } // Paint handlers for the left page button static bool_t left_page_button_paint(struct WindowMsg *pMsg) { HWND hwnd = pMsg->hwnd; HDC hdc = GDD_BeginPaint(hwnd); if (hdc == NULL) return false; wjh_setBackBmp(hwnd, wjh_Search_BMP("turn_left")); GDD_EndPaint(hwnd, hdc); return true; } // Paint handlers for the right page button static bool_t right_page_button_paint(struct WindowMsg *pMsg) { HWND hwnd = pMsg->hwnd; HDC hdc = GDD_BeginPaint(hwnd); if (hdc == NULL) return false; wjh_setBackBmp(hwnd, wjh_Search_BMP("turn_right")); GDD_EndPaint(hwnd, hdc); return true; } // Paint handlers for the icon buttons static bool_t page_button_paint(struct WindowMsg *pMsg) { HWND hwnd = pMsg->hwnd; HDC hdc = GDD_BeginPaint(hwnd); if (hdc == NULL) return false; wjh_setBackBmp(hwnd, wjh_Search_BMP("button1_background")); wjh_setBackBmpHyaline(hwnd, wjh_Search_ICONBMP(iconname3[(iconflag3++)%12])); GDD_EndPaint(hwnd, hdc); return true; } // Click handlers for the left page button static bool_t left_page_button_click(struct WindowMsg *pMsg) { // Navigate to the previous page wjh_deleteWindow(GDD_GetWindowParent(pMsg->hwnd)); enter_to_page2(); // Example of navigating to page1 return true; } // Click handlers for the right page button static bool_t right_page_button_click(struct WindowMsg *pMsg) { // Navigate to the next page wjh_deleteWindow(GDD_GetWindowParent(pMsg->hwnd)); enter_to_page1(); // Example of navigating to page3 return true; }