-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmsg_control.cpp
More file actions
61 lines (46 loc) · 1.58 KB
/
msg_control.cpp
File metadata and controls
61 lines (46 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
注:目前仅适配了1920*1080的分辨率
*/
#include <gtk/gtk.h>
#include <locale.h>
gboolean move_window(gpointer data)
{
GtkWidget *window = GTK_WIDGET(data);
static gint x = 1920;
static gint y = 0;
gtk_window_move(GTK_WINDOW(window), x, y);
x -= 2;
if (x <= -900 && y == 0) {
gtk_main_quit();
return G_SOURCE_REMOVE;
}
return G_SOURCE_CONTINUE;
}
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "en_US.UTF-8");
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *label = gtk_label_new(g_locale_to_utf8(argv[1], -1, NULL, NULL, NULL));
GtkWidget *table = gtk_table_new(1, 1, TRUE);
gtk_container_add(GTK_CONTAINER(window), table);
gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
g_signal_connect_swapped(label, "pressed", G_CALLBACK(gtk_main_quit), window);
// 设置文本的样式
GdkRGBA color;
gdk_rgba_parse(&color, "rgba(255, 255, 255, 0.5)");
gtk_widget_override_background_color(label, GTK_STATE_FLAG_NORMAL, &color);
PangoFontDescription *font_desc = pango_font_description_from_string("Sans 32");
gtk_widget_override_font(label, font_desc);
g_timeout_add(8, move_window, window);
// 设置窗口起始位置为右上角
gint screen_width = gdk_screen_get_width(gtk_widget_get_screen(window));
gtk_window_move(GTK_WINDOW(window), screen_width, 0);
// 隐藏标题栏
gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
// 设置窗口置顶
gtk_window_set_keep_above(GTK_WINDOW(window), TRUE);
gtk_widget_show_all(window);
gtk_main();
return 0;
}