分类: 嵌入式
2009-11-26 13:50:25
日历构件(GtkCalendar)显示一个月历视图,可以在上面方便地选择年份、月份和日期。
这样,如果要做与日期相关的编程,不再需要考虑复杂的历法问题。日历构件本身外观也很
漂亮,创建和使用都非常简单。
1.
名称:: |
gtk_calendar_new |
功能: |
创建日历构件 |
头文件: |
#include |
函数原形: |
GtkWidget *gtk_calendar_new(); |
参数: |
无 |
返回值: |
新的日历构件 |
下面是创建日历的程序例子:
#include int main(int argc,char *argv[ ]) { GtkWidget *window; GtkWidget *calendar; gtk_init(&argc,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); calendar=gtk_calendar_new(); gtk_container_add(GTK_CONTAINER(window),calendar); gtk_widget_show(calendar); gtk_widget_show(window); gtk_main(); } |
程序运行后会得到如下界面:
有时候,需要同时对构件的外观和内容做很多的修改。这时候可能会引起构件的多次更,导致屏幕闪烁。可以在修改之前使用一个函数将构件“冻结”,然后在修改完成之后再用一个函数将构件“解冻”。这样,构件在整个过程中只做一次更新。
我们用gtk_calendar_freeze函数冻结构件,用gtk_calendar_thaw函数解冻构件。
2.
名称:: |
gtk_calendar_freeze gtk_calendar_thaw |
功能: |
冻结/解冻日历构件 |
头文件: |
#include |
函数原形: |
void gtk_calendar_freeze( GtkCalendar *Calendar ); void gtk_calendar_thaw ( GtkCalendar *Calendar ); |
参数: |
calendar 日历构件 |
返回值: |
无 |
日历构件有几个选项,可以用来改变构件的外观和操作方式。使用gtk_calendar_diaplay_options函数可以改变这些选项.
3.
名称:: |
gtk_calendar_display_options |
功能: |
设置日历构件外观和操作方式 |
头文件: |
#include |
函数原形: |
void gtk_calendar_display_options( GtkCalendar *calendar, GtkCalendarDisplayOptions flags ); |
参数: |
calendar 日历构件 flags 选项 |
返回值: |
无 |
函数中的f l a g s参数可以将下面的五种选项中的一个或者多个用逻辑位或( |)操作符组合起来:
GTK_CALENDAR_SHOW_HEADING:这个选项指定在绘制日历构件时,应该显示月份和年份。
GTK_CALENDAR_SHOW_DAY_NAMES:这个选项指定用三个字母的缩写显示每一天是星期几(比如M O N、T U E等)。
GTK_CALENDAR_NO_MONTH_CHANGE:这个选项指定用户不应该也不能够改变显示的月份。如果只想显示某个特定的月份,则可以使用这个选项。比如,如果在窗口上同时为一年的1 2个月分别设置一个日历构件时。
GTK_CALENDAR_SHOW_WEEK_NUMBERS:这个选项指定应该在构件的左边显示每一周在全年的周序号(一年是5 2个周,元月1日是第1周,1 2月3 1日是第5 2周)。
GTK_CALENDAR_WEEK_START_MONDAY:这个选项指定在日历构件中每一周是从星期一开始而不是从星期天开始。缺省设置是从星期天开始。此选项只影响日期在构件中从左到右的排列顺序。
当设置好日历构件后,我门可以通过gtk_calendar_select_month函数选择某一月份,通过gtk_calendar_select_day选择某一天。