je crèè 1 Convertisseur pour les base numerique de 10, 2 et 16 et j´utilise donc 1 Combo(pour definir le typ de donnè inserè) 1 boite texte pour inserè la donnè et 1 Bouton pour déclancher la conversion
Voila mon code au complet:
- include < stdlib.h>
- include < gtk/gtk.h>
- include < stdio.h>
void ClickEffect(GtkWidget *Combo, GtkWidget *pWindow, gpointer pData);
int main(int argc, char **argv)
{
//////////////////////////////////////////////////
///////////////////////////////////
/ //////////////////////////////// INTERFACE / ////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////////////////
/ * Declaration des Widgets */
const gchar* cText;
GtkWidget* pWindow;
GtkWidget* TextBox;
GtkWidget* BtnConv;
GtkWidget* Combo;
GtkWidget* lblDeci1;
GtkWidget* lblDeci2;
GtkWidget* lblBin1;
GtkWidget* lblBin2;
GtkWidget* lblHex1;
GtkWidget* lblHex2;
GtkWidget* pTable;
gchar* Deci;
gchar* Bin;
gchar* Hex;
GList* pList = NULL;
/ * Initialisation de GTK */
gtk_init(&, &);
/ * Creation et parametrage de la fenetre principale */
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(pWindow), " Convertisseur base: 2, 10, 16");
gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
/ * Creation et insertion des donnees dans la liste " pList" pour le combo */
pList = g_list_append(pList, " Binaire");
pList = g_list_append(pList, " Decimale");
pList = g_list_append(pList, " Hexadecimale");
/ * Creation des Widgets et initialisation des label n°2 */
lblDeci1 = gtk_label_new("Decimale");
Deci = g_locale_to_utf8("0", -1, NULL, NULL, NULL);
lblDeci2 = gtk_label_new(Deci);
lblBin1 = gtk_label_new("Binaire");
Bin = g_locale_to_utf8("0", -1, NULL, NULL, NULL);
lblBin2 = gtk_label_new(Bin);
lblHex1 = gtk_label_new("Hexadecimale");
Hex = g_locale_to_utf8("0", -1, NULL, NULL, NULL);
lblHex2 = gtk_label_new(Hex);
TextBox = gtk_entry_new();
Combo = gtk_combo_new();
BtnConv = gtk_button_new_with_label("Convertir");
/ * Insertion de la liste " pList" dans le combo " Combo" */
gtk_combo_set_popdown_strings(GTK_COMBO(Combo), pList);
/ * Creation de la table et insertion des widgets */
pTable = gtk_table_new(3, 3, TRUE);
gtk_table_attach(GTK_TABLE(pTable), Combo, 0, 1, 0, 1, GTK_EXPAND, GTK_EXPAND, 20, 0);
gtk_table_attach(GTK_TABLE(pTable), TextBox, 1, 2, 0, 1, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pTable), BtnConv, 2, 3, 0, 1, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pTable), lblBin1, 0, 1, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pTable), lblDeci1, 1, 2, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pTable), lblHex1, 2, 3, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pTable), lblBin2, 0, 1, 2, 3, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pTable), lblDeci2, 1, 2, 2, 3, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pTable), lblHex2, 2, 3, 2, 3, GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable));
//////////////////////////////////////////////////
///////////////////////////////////
/ //////////////////////////// LIAISON AVEC FONCTION / ////////////////////////////
//////////////////////////////////////////////////
///////////////////////////////////
g_signal_connect(G_OBJECT(BtnConv), " clicked", G_CALLBACK(ClickEffect), NULL);
/ * Connexion du signal " destroy" et affichage de la fenetre principale */
g_signal_connect(G_OBJECT(pWindow), " destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(pWindow);
/ * Lancement de la boucle Gtk */
gtk_main ( );
return EXIT_SUCCESS;
}
void ClickEffect(GtkWidget *Combo, GtkWidget *pWindow, gpointer pData)
{
const gchar* cText;
cText = gtk_entry_get_text(GTK_ENTRY(Combo));
/ * test si le choix est bien transmis */
if ( cText == " Binaire") {
gtk_window_move(GTK_WINDOW(pWindow), 400, 300);
}
else if ( cText == " Decimale") {
gtk_window_move(GTK_WINDOW(pWindow), 320, 400);
}
else if ( cText == " Hexadecimal") {
gtk_window_move(GTK_WINDOW(pWindow), 400, 400);
}
else {
gtk_window_move(GTK_WINDOW(pWindow), 120, 100);
}
}
La compilation de passe bien mais après avoir apuyè sur " Convertir" se qui devrais modifier la fenetre suivant le choix(decimal, hexa ou binaire) il me met des erreur ms-dos
< convGTK.exe:980>: GLib-GObject-WARNING **: invalid cast from ´GtkButton´ to ´GtkEntry´
< convGTK.exe:980>: Gtk-CRITICAL **: file gtkentry.c: line 3700 < gtk_entry_get_text>: assertion ´GTK_IS_ENTRY < entry>´ failed
< convGTK.exe:980>: Gtk-CRITICAL **: file gtkwindow.c: line 3257 < gtk_window_move>: assertion ´GTK_IS_WINDOW < window>´ failed
j´ai fait des recherche sur gtkwindow.c il existe meme pas!! c´est veut dir quoi ces message?? comment les resoudre?? merci