// // main.c // PWDM // // Created by Eric on 16-2-19. // Copyright (c) 2016年 Bakantu Eric. All rights reserved. // #include #include #include #include #include #define N_MAX 256 GtkWidget *window,*frame,*get_pwd,*sl_input,*sl_spec,*sl_output,*s_input,*s_spec,*ss_output; void cal_pwd(void); void cal_pwd(void){ char *i_buf,*s_buf,o_buf[N_MAX]; unsigned long i_len,s_len,i; unsigned long long i_num = 0,s_num = 0; i_buf = (gchar *) gtk_entry_get_text(GTK_ENTRY(s_input)); s_buf = (char *) gtk_entry_get_text(GTK_ENTRY(s_spec)); i_len = strlen(i_buf); s_len = strlen(s_buf); for (i = 0; i < i_len; i++) { i_num += (unsigned long long) i_buf[i]; i_num *= 10; } for (i = 0; i < s_len; i++) { s_num += (unsigned long long) s_buf[i]; s_num *= 10*i_len; } i_num |= ~(~s_num&(~i_num)); sprintf(o_buf, "%llx",i_num); gtk_label_set_text(GTK_LABEL(ss_output), o_buf); } int main(int argc, char * argv[]) { // insert code here... gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "PWDM 2"); gtk_window_set_default_size(GTK_WINDOW(window), 300, 200); frame = gtk_fixed_new(); gtk_container_add(GTK_CONTAINER(window), frame); get_pwd = gtk_button_new_with_label("生成密码"); gtk_widget_set_size_request(get_pwd, 290, 30); gtk_fixed_put(GTK_FIXED(frame), get_pwd, 5, 150); sl_input = gtk_label_new("输入码: "); gtk_widget_set_size_request(sl_input, 60, 30); gtk_fixed_put(GTK_FIXED(frame), sl_input, 5, 5); s_input = gtk_entry_new(); gtk_widget_set_size_request(s_input, 230, 30); gtk_fixed_put(GTK_FIXED(frame), s_input, 65, 5); gtk_entry_set_max_length(GTK_ENTRY(s_input), 18); sl_spec = gtk_label_new("特征码: "); gtk_widget_set_size_request(sl_spec, 60, 30); gtk_fixed_put(GTK_FIXED(frame), sl_spec, 5, 60); s_spec = gtk_entry_new(); gtk_widget_set_size_request(s_spec, 230, 30); gtk_fixed_put(GTK_FIXED(frame), s_spec, 65, 60); gtk_entry_set_max_length(GTK_ENTRY(s_spec), 6); sl_output = gtk_label_new("加密码: "); gtk_widget_set_size_request(sl_output, 60, 30); gtk_fixed_put(GTK_FIXED(frame), sl_output, 5, 110); ss_output = gtk_label_new(""); gtk_widget_set_size_request(ss_output, 230, 30); gtk_fixed_put(GTK_FIXED(frame), ss_output, 65, 110); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(get_pwd, "clicked", G_CALLBACK(cal_pwd), NULL); gtk_widget_show_all(window); gtk_main(); return 0; }