gtk做个按钮界面
来源:互联网 发布:决战武林进阶数据神弓 编辑:程序博客网 时间:2024/04/28 06:26
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <fakekey/fakekey.h>
#include <X11/keysym.h>
Display* disp ;
FakeKey *fk;
static char *keyboard_display[] =
{
"A/0", "B/0", "C/0", "D/0", "E/0", "F/0", "G/0"
};
static gushort keyboard_send[] =
{
XK_A, XK_B, XK_C, XK_D, XK_E, XK_F, XK_G
};
void da_call (GtkDialog *dialog, gint response_id, gpointer user_data)
{
if (GTK_RESPONSE_OK == response_id)
g_print("OK_Pressed");
else if (GTK_RESPONSE_CANCEL == response_id)
g_print("CANCEL_Pressed");
}
gboolean bt_release (GtkWidget *widget, GdkEventButton *event,
gpointer user_data)
{
gint i = GPOINTER_TO_UINT(user_data);
fakekey_press_keysym(fk, keyboard_send[i], 0);
fakekey_release(fk);
return TRUE;
}
void clicked_callback(GtkButton *button, GtkWindow *window) {
gint i, j;
GtkWidget *button1;
GtkWidget *win = gtk_window_new (GTK_WINDOW_POPUP);
GtkWidget *vbox = gtk_vbox_new(FALSE, 5);
GtkWidget *hbox;
for ( i = 0 ; i < 7; i++)
{
hbox = gtk_hbox_new(FALSE, 5);
for (j = 0 ; j < 7; j++ ) {
button1 = gtk_button_new_with_label (keyboard_display[j]);
gtk_box_pack_start_defaults(GTK_BOX(hbox), button1);
g_signal_connect(G_OBJECT(button1), "button-release-event",
G_CALLBACK(bt_release), GUINT_TO_POINTER (j));
}
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox);
}
gtk_container_add(GTK_CONTAINER(win), vbox);
gtk_window_move (GTK_WINDOW (win), 200, 200); /* 设置窗口位置 */
gtk_widget_show_all(win);
}
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *button;
GtkWidget *entry;
GtkWidget *vbox;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "GtkDialog");
disp = XOpenDisplay(NULL);
if( disp == NULL )
return 1;
fk = fakekey_init(disp);
vbox = gtk_vbox_new(FALSE, 5);
button = gtk_button_new_with_label("按我");
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_box_pack_start_defaults(GTK_BOX(vbox), button);
entry = gtk_entry_new();
gtk_box_pack_start_defaults(GTK_BOX(vbox), entry);
g_signal_connect(GTK_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(GTK_OBJECT(button), "clicked",
G_CALLBACK(clicked_callback), window);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
编译:
gcc keyboard.c -o keyboard `pkg-config --cflags --libs gtk+-2.0` -lfakekey
- gtk做个按钮界面
- mfc 按钮 实现多个界面跳转
- cocos图片按钮之一个界面显示
- 如何做一个按钮二个事件
- Gtk显示不规则按钮
- java做个界面.有点问题
- 做界面真是个体力活
- Gtk线程刷新界面
- Gtk线程刷新界面
- gtk多线程更新界面
- python3使用tkinter做界面之按钮Button
- IOS界面弹窗显示多个按钮
- 多个按钮加入界面的排布规律
- GTK+位图按钮的封装
- 《gtk编程》按钮及响应
- GTK编程基础----按钮构件
- [代码实例][gtk+]创建按钮
- Gtk给按钮添加快捷键
- 试试MySQL配置主从复制
- Flex中实现页面的跳转以下几种方式
- vSphere 4系列之五:通过模板批量部署虚拟机
- htons(), htonl(), ntohs(), ntohl()
- 积分的获取
- gtk做个按钮界面
- vSphere 4系列之六:Standard vSwitch
- 《转》vmware下的linux系统扩展磁盘空间
- 讨论 异步ajax
- Migration Exchange to Notes / Notes to Exchange
- Java 内省、JavaBean、BeanUtils
- VB 冒泡排序
- Linux rsync命令详解
- 从CSDN的高校俱乐部看过去