亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? box.c

?? 這些GTK+程序都是基于常用的API來(lái)實(shí)現(xiàn)熟悉這些API為目的
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* * * Sample Code for Gtk+ Programming in C, 1st Edition, Prentice Hall * * Copyright 2000 - 2002 Syd Logan, All Rights Reserved * * This code is distributed without warranty. You are free to use this * code for any purpose, however, if this code is republished or * redistributed in its original form, as hardcopy or electronically, * then you must include this copyright notice along with the code. * * Questions or comments regarding this code or any bugs it contains can * be directed to the author via e-mail at slogan@cts.com **/#include <gtk/gtk.h>// forward declarations to avoid compiler warningsvoid ResetSettingsMenuItems( void );void UpdateChildren( void );void MessageBox( char *message );#define VERSION_MAJOR 1#define VERSION_MINOR 0// some globals to make life easystatic GtkWidget *container;static GNode *root;static GNode *current;static int n = 1;// tree nodetypedef struct _boxdata {	GtkWidget *container;		// the vbox or hbox instance	int spacing;			// current spacing	gboolean homogeneous;		// current homogeneous	int padding;			// current padding 	gboolean fill;			// current child fill 	gboolean expand;		// current child expand } BoxData;// used to hold callback data for settings dialogtypedef struct _settingsData {	GtkWidget *dialog;		// Padding/Spacing dialog	GtkWidget *pad_entry;		// Padding entry widget	GtkWidget *space_entry;		// Space entry widget} SettingsData;static SettingsData settingsData;	// dialog is modal, only need one// dump tree to stdoutgbooleantraverse_func( GNode *node, gpointer data ){	int i;	// indent	for ( i = 0; i < g_node_depth( node ) - 1; i++ )		printf( "  " );	// print the node	printf( "Node %x parent %x [%x] %s %s\n", node, node->parent, 		((BoxData *) node->data)->container, 		(GTK_IS_VBOX(((BoxData *)node->data)->container) 		? "VBox" : "Hbox" ), (node == current ? "<--" : "" ) );	return( FALSE );	// continue traversal}voiddump_tree( gpointer data, guint callback_action, GtkWidget *w ){	printf( "Tree Dump ********************************************************************\n" );	printf( "<-- is current box\n" );	g_node_traverse( root, G_PRE_ORDER, G_TRAVERSE_ALL, 999, 		traverse_func, NULL );}// traversal functionsstatic void go_up( gpointer data, guint callback_action, GtkWidget *w ){	if ( current != root ) {			current = current->parent;		container = (GtkWidget *)((BoxData *)current->data)->container;		}	dump_tree( (gpointer) NULL, 0, (GtkWidget *) NULL );	ResetSettingsMenuItems();}static void go_down( gpointer data, guint callback_action, GtkWidget *w ){	GNode *node;	node = g_node_first_child( current );	if ( node != (GNode *) NULL ) 		current = node;	container = (GtkWidget *)((BoxData *)current->data)->container;		dump_tree( (gpointer) NULL, 0, (GtkWidget *) NULL );	ResetSettingsMenuItems();}static void go_previous( gpointer data, guint callback_action, GtkWidget *w ){	GNode *node;	node = g_node_prev_sibling( current );	if ( node != (GNode *) NULL ) 		current = node;	container = (GtkWidget *)((BoxData *)current->data)->container;		dump_tree( (gpointer) NULL, 0, (GtkWidget *) NULL );	ResetSettingsMenuItems();}static void go_next( gpointer data, guint callback_action, GtkWidget *w ){	GNode *node;	node = g_node_next_sibling( current );	if ( node != (GNode *) NULL ) 		current = node;	container = (GtkWidget *)((BoxData *)current->data)->container;		dump_tree( (gpointer) NULL, 0, (GtkWidget *) NULL );	ResetSettingsMenuItems();}// box add functionsstatic void add_horz_box( gpointer data, guint callback_action, GtkWidget *w ){	GtkWidget *hbox;	GNode *node;	BoxData *boxData;	boxData = g_malloc( sizeof( BoxData ) ); 	hbox = gtk_hbox_new(FALSE, 0);	boxData->container = hbox;	boxData->homogeneous = FALSE;	boxData->fill = TRUE;				boxData->expand = TRUE;	boxData->padding = 0;	boxData->spacing = 0;	if ( callback_action == 0 )		gtk_box_pack_start( GTK_BOX(container), hbox, 			boxData->expand, boxData->fill, boxData->padding );	else		gtk_box_pack_end( GTK_BOX(container), hbox, 			boxData->expand, boxData->fill, boxData->padding );	node = g_node_new( (gpointer) boxData );	g_node_insert( current, -1, node );		dump_tree( (gpointer) NULL, 0, (GtkWidget *) NULL );	ResetSettingsMenuItems(); 	gtk_widget_show (hbox);}static void add_vert_box( gpointer data, guint callback_action, GtkWidget *w ){	GtkWidget *vbox;	GNode *node;	BoxData *boxData;	boxData = g_malloc( sizeof( BoxData ) ); 	vbox = gtk_vbox_new(FALSE, 0); 	gtk_container_add(GTK_CONTAINER(container), vbox);	boxData->container = vbox;	boxData->homogeneous = FALSE;	boxData->fill = TRUE;				boxData->expand = TRUE;	boxData->padding = 0;	boxData->spacing = 0;	if ( callback_action == 0 )		gtk_box_pack_start( GTK_BOX(container), vbox, 			boxData->expand, boxData->fill, boxData->padding );	else		gtk_box_pack_end( GTK_BOX(container), vbox, 			boxData->expand, boxData->fill, boxData->padding );	node = g_node_new( (gpointer) boxData );	g_node_insert( current, -1, node );		dump_tree( (gpointer) NULL, 0, (GtkWidget *) NULL );	ResetSettingsMenuItems(); 	gtk_widget_show (vbox);}// child (button) widget add functionsstatic void add_button_to_box_start( gpointer data, guint callback_action, GtkWidget *w ){	GtkWidget *button;	char buf[ 64 ];	sprintf( buf, "Start %d Box %x", n++, container );	button = gtk_button_new_with_label( buf ); 	gtk_box_pack_start( GTK_BOX(container), button, 		((BoxData *) current->data)->expand,		((BoxData *) current->data)->fill,		((BoxData *) current->data)->padding ); 	gtk_widget_show(button);}static void add_button_to_box_end( gpointer data, guint callback_action, GtkWidget *w ){	GtkWidget *button;	char buf[ 64 ];	sprintf( buf, "End %d Box %x", n++, container );	button = gtk_button_new_with_label( buf ); 	gtk_box_pack_end( GTK_BOX(container), button, 		((BoxData *) current->data)->expand,		((BoxData *) current->data)->fill,		((BoxData *) current->data)->padding ); 	gtk_widget_show (button);}// padding and spacing dialogstatic voidClickedCallback(GtkWidget *widget, gpointer unused){	char *data;	int spacing;	data = gtk_entry_get_text( GTK_ENTRY(settingsData.pad_entry) );	((BoxData *) current->data)->padding = atoi( data );	// get the spacing	data = gtk_entry_get_text( GTK_ENTRY(settingsData.space_entry) );	spacing = ((BoxData *) current->data)->spacing = atoi( data );	// make the change to spacing	gtk_box_set_spacing(GTK_BOX(((BoxData *) current->data)->container), 		spacing);	UpdateChildren();	gtk_widget_destroy( settingsData.dialog );}// make changes to children after a setting changevoidUpdateChildren( void ){	GtkBoxChild *child;	GList *children;	GtkBox *box;	gboolean expand, fill;	int padding;	GtkPackType type;	box = GTK_BOX(((BoxData *) current->data)->container);	children = box->children;	while ( children != (GList *) NULL ) {		child = (GtkBoxChild *) children->data;		gtk_box_query_child_packing(box, (GtkWidget *)child->widget, 			&expand, &fill, &padding, &type );		gtk_box_set_child_packing(box, (GtkWidget *) child->widget,			((BoxData *) current->data)->expand,			((BoxData *) current->data)->fill,			((BoxData *) current->data)->padding, type );		children = children->next;	}}// user canceled the settings dialogstatic voidCancelCallback(GtkWidget *widget, GtkWidget *dialog_window){	gtk_widget_destroy( dialog_window );}// display a dialog to get padding and spacing valuesvoidGetPaddingAndSpacing( void ){  GtkWidget *button, *label, *entry, *hbox, *dialog_window;	char buf[ 64 ];		// create the dialog and set attributes  settingsData.dialog = dialog_window = gtk_dialog_new();	gtk_window_set_modal(GTK_WINDOW(dialog_window), TRUE);  gtk_window_position(GTK_WINDOW (dialog_window), 		GTK_WIN_POS_MOUSE); 	gtk_window_set_title(GTK_WINDOW(dialog_window), 		"Padding and Spacing");	// fill in the content area 	hbox = gtk_hbox_new (FALSE, 1);  gtk_box_pack_start(GTK_BOX(GTK_DIALOG (dialog_window)->vbox),    hbox, FALSE, FALSE, 0);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费观看视频在线| 日韩午夜av一区| 久久99精品国产.久久久久| 中文字幕亚洲一区二区va在线| 欧美日韩在线精品一区二区三区激情 | 91蜜桃网址入口| 免费久久99精品国产| 一区二区三区欧美日韩| 精品国产一区二区三区四区四| 91麻豆国产香蕉久久精品| 国内久久婷婷综合| 午夜精品久久久| 亚洲日本在线a| 国产婷婷一区二区| 精品国产精品一区二区夜夜嗨| 91黄色免费看| 91香蕉视频污| 成人精品小蝌蚪| 国产麻豆精品在线观看| 日韩和欧美的一区| 夜夜操天天操亚洲| 国产精品久久久久永久免费观看| 欧美一区二区福利在线| 欧美日韩在线播放三区| 色久综合一二码| 99在线热播精品免费| 国产剧情一区二区| 国产自产2019最新不卡| 奇米一区二区三区| 丝袜美腿亚洲一区| 午夜精品福利一区二区蜜股av| 亚洲精品日韩一| 亚洲欧美日韩中文播放| 亚洲欧洲www| 中文字幕一区日韩精品欧美| 久久九九影视网| 欧美国产日韩一二三区| 国产欧美在线观看一区| 久久久亚洲精品石原莉奈| 久久久久久电影| 日本一区二区免费在线观看视频| 久久久久高清精品| www久久精品| 久久久久久久综合日本| 国产日产精品一区| 中文一区二区在线观看| 中文字幕亚洲视频| 亚洲最色的网站| 亚洲无人区一区| 日本伊人精品一区二区三区观看方式| 三级影片在线观看欧美日韩一区二区| 婷婷开心激情综合| 麻豆精品一区二区av白丝在线| 看片的网站亚洲| 国产高清无密码一区二区三区| 国产成人福利片| 91论坛在线播放| 欧美日本乱大交xxxxx| 欧美一区午夜视频在线观看| 欧美va在线播放| 国产三级欧美三级日产三级99| 中文在线免费一区三区高中清不卡| 亚洲欧洲国产日本综合| 亚洲国产视频在线| 麻豆精品视频在线观看免费| 国产馆精品极品| 在线日韩国产精品| 日韩欧美一区二区不卡| 久久午夜国产精品| 亚洲情趣在线观看| 日韩二区三区四区| 成人性生交大片免费看中文| 色天天综合色天天久久| 91麻豆精品国产91| 欧美国产综合一区二区| 亚洲免费观看高清完整| 日本欧美在线看| 成人动漫视频在线| 欧美日韩一区三区| 2020国产精品| 亚洲蜜桃精久久久久久久| 日韩专区欧美专区| 成人性生交大合| 欧美日本在线一区| 国产精品情趣视频| 日韩福利电影在线观看| eeuss国产一区二区三区| 欧美人伦禁忌dvd放荡欲情| 国产日产欧产精品推荐色| 亚洲18影院在线观看| 国产成人av电影在线播放| 欧美视频一区二区三区在线观看| 久久久久久久久久美女| 亚洲成人免费电影| www.欧美.com| 日韩精品一区二区三区中文不卡| 亚洲欧洲日韩在线| 精品一区二区免费在线观看| 欧美色精品天天在线观看视频| 国产欧美精品国产国产专区| 日韩精品一二区| 精品电影一区二区| 亚洲欧美日韩成人高清在线一区| 国产一区二区三区在线观看免费| 欧美亚洲高清一区二区三区不卡| 国产欧美日韩中文久久| 青草av.久久免费一区| 欧美中文字幕一区二区三区亚洲 | 欧美成人精品高清在线播放| 亚洲一区二区在线视频| 成人免费高清在线观看| 欧美成人一级视频| 婷婷丁香激情综合| 欧美色精品在线视频| 亚洲欧洲在线观看av| 国产福利精品导航| 久久毛片高清国产| 久久国产精品露脸对白| 欧美一区二区在线免费播放| 一区二区三区中文字幕在线观看| 成人免费看片app下载| 久久综合色天天久久综合图片| 日本不卡高清视频| 欧美精品亚洲一区二区在线播放| 一区二区三区中文免费| 色婷婷久久99综合精品jk白丝| 中文字幕一区在线| 北岛玲一区二区三区四区| 欧美国产乱子伦| jiyouzz国产精品久久| 欧美激情综合网| 国产69精品久久久久777| 国产亚洲一区二区三区四区| 国产一区二区三区美女| 精品国产一区a| 韩国视频一区二区| 国产欧美一区二区在线| 国产高清亚洲一区| 国产精品久久福利| 欧美极品少妇xxxxⅹ高跟鞋| 国产v日产∨综合v精品视频| 国产色产综合产在线视频| 国产91在线观看| 国产精品国产三级国产普通话蜜臀| 粉嫩av一区二区三区在线播放 | 欧美一区二区三区免费在线看| 丝袜美腿亚洲一区| 日韩欧美一区二区三区在线| 国内精品写真在线观看| 国产农村妇女毛片精品久久麻豆| 不卡视频免费播放| 亚洲影院理伦片| 91精品欧美综合在线观看最新| 麻豆精品久久精品色综合| 久久亚洲精华国产精华液| 成人app在线观看| 亚洲成av人片一区二区| 91精品一区二区三区久久久久久 | 国产一级精品在线| 国产精品久久影院| 欧美日韩一二区| 久久精品国产999大香线蕉| 欧美高清在线一区二区| 99精品欧美一区二区蜜桃免费| 亚洲综合久久av| 日韩女优毛片在线| 不卡视频一二三| 日韩国产在线观看一区| 欧美成人精精品一区二区频| 国产成人欧美日韩在线电影| 亚洲精品久久久久久国产精华液| 777a∨成人精品桃花网| 国产v日产∨综合v精品视频| 一区二区免费看| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩在线直播| 国产成人综合亚洲网站| 亚洲免费观看在线视频| 日韩一级黄色大片| 97久久超碰精品国产| 日本美女一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲成人免费在线观看| 久久久青草青青国产亚洲免观| 欧洲精品视频在线观看| 精品一区二区免费视频| 一区二区免费看| 国产女人18毛片水真多成人如厕| 欧美日韩精品一区二区三区| 国产suv一区二区三区88区| 天堂精品中文字幕在线| 最新热久久免费视频| 日韩欧美国产三级电影视频| 色天天综合色天天久久| 国产成人自拍在线| 免费人成黄页网站在线一区二区| 亚洲三级电影全部在线观看高清| 欧美电视剧在线看免费| 色老头久久综合| 成人av网址在线|