C: GTK a g_callback s parametrom

Programovacie jazyky, rady, poradňa...
G0lDiER_
King
King
Používateľov profilový obrázok
Príspevky: 1948
Registrovaný: 16 máj 2007, 16:09
Bydlisko: Topolcany
Kontaktovať používateľa:

C: GTK a g_callback s parametrom

Príspevok od používateľa G0lDiER_ »

zdravim, zacinam s gtk kniznicou a vseobecne s C a nemozem prist na jednu vec.
mam tlacitko, chcem ho spojit pomocou g_signal_connect s funkciou a odoslat jej jeden parameter:

Kód: Vybrať všetko

void funkcia(int cislo)
{
    g_print("cislo: %i\n", cislo)
}
int main(int argc, char** argv)
{
    g_signal_connect(G_OBJECT(tlacitko), "clicked", G_CALLBACK(funkcia), 1);
}
ale nejak to nefunguje. to cislo mi stale pise nejake nezmyselne, povedzme 14679. ako poslat ten parameter? dakujem.
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: C: GTK a g_callback s parametrom

Príspevok od používateľa c-ice »

no nijak :) funguje ti to spravne lebo nemas aky parameter posielat ... ty spracovavaš event clicknutia tak preco by ti tam nieco malo chodit ?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: C: GTK a g_callback s parametrom

Príspevok od používateľa chrono »

Si si istý tým, že ten tvoj callback má správne parametre? (pretože o tom dosť pochybujem; musíš sa pozrieť do dokumentácie a podľa toho musíš urobiť ten callback)

PS: Tej callback funkcii môžeš dať jeden parameter, ale má tam byť ukazovateľ. Ak chceš predať naozaj číslo, použi tam funkciu z glib, ktorá konvertuje číslo na ukazovateľ a v tom callbacku použiješ funkciu (teda skôr makro), ktoré zmení ukazovateľ na číslo.
G0lDiER_
King
King
Používateľov profilový obrázok
Príspevky: 1948
Registrovaný: 16 máj 2007, 16:09
Bydlisko: Topolcany
Kontaktovať používateľa:

Re: C: GTK a g_callback s parametrom

Príspevok od používateľa G0lDiER_ »

no ked sa to tak nerobi, tak nevadi, ja sa zaobidem aj bez toho.
skor mam teraz dalsi blby problem, ktory predpokladam bezne nevznika.

vo funkcii vyvolavat funkciu:D a samozrejme ze mi to nejde, lebo jedna funkcia je deklarovana skor, nez druha.
asi budem muset celkovo zmenit strukturu tej aplikacie, vsak?

v jednej funkcii mam connect tlacitka na funkciu.
v tej druhej funkcii ktoru som vyvolal zase volam tu prvu funkciu len s inymi parametrami :/
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: C: GTK a g_callback s parametrom

Príspevok od používateľa chrono »

Do callback funkcie si jeden parameter poslať môžeš. To, že ti to nefunguje spôsobuje to, že ty si si pri tej tvojej funkcii vymyslel typ a počet parametrov. Ak si to pripájal na GtkButton, tak tá funkcia musí vyzerať takto. Cez ten druhý parameter (na názve nezáleží) môžeš predať to číslo (ale pomocou makra GINT_TO_POINTER).

Predpokladám, že tým, že jedna funkcia je deklarovaná skôr ako iná si v skutočnosti myslel, že jedna funkcia je definovaná skôr ako iná. :) V takom prípade nič nebráni tomu tie funkcie nadeklarovať pred tým, ako sú nadefinované, takže pri tom použití bude kompilátor poznať jej parametre.
Napísať odpoveď