CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Gtk+ sur Dev C/C++

hugo42
hugo42
Niveau 9
12 juillet 2005 à 10:58:52

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:

  1. include < stdlib.h>
  2. include < gtk/gtk.h>
  3. 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

JeanYvesYves
JeanYvesYves
Niveau 10
12 juillet 2005 à 13:09:53

regarde sur le net pour voir s´il existe une version windows de gtk+.
Sinon, tu seras obligé de changer de librairie d´interface API.

dnob700
dnob700
Niveau 10
12 juillet 2005 à 17:29:54

Je ne connait pas du tout GTK, mais es-tu sur que Combo est bien un GTK_ENTRY ?

C´est à dire : au début de cette fonction
void ClickEffect(GtkWidget *Combo, GtkWidget *pWindow, gpointer pData)

Je pense que le problème vient de là :
cText = gtk_entry_get_text(GTK_ENTRY(Combo));

Peut-être qu´il existe une fonction du genre gtk_combo_get_text que tu pourrait apliquer à GTK_COMBO(Combo) mais là j´ai l´impression qu´il n´aime pas du tout faire le cast depuis Combo vers un GTK_ENTRY.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment