| 
| Kirjoittaja | Viesti |  |       
 Jon
 
 | Askarruttaa muutama asia käyttöliittymäohjelmointiin liittyen...| Lauantaina,  15. maaliskuuta, 2003 - klo 12.31: |  | 
 
 - miten saa rajattoman määrän ikkunoita käyttöön, ts. miten ikkunat pitää luoda ja niiden signaalit käsitellä? Tällä hetkellä olen kai rajoittunut noin 16 ikkunan käyttöön mikä tietenkin on ihan tarpeeksi ohjelmaani varten, ja saatan siinä rajoituksessa pysyäkin, jos menee kovin monimutkaiseksi muuten...
 
 - Kynien varaus. Loin structin, jossa on kolme ULONGia red, green ja blue -arvoja varten. Käytän tätä structia tallentamaan paletista valittujen kynien RGB-arvot (GetRGB32():sta käyttäen) asetustiedostoon, ja luettaessa käytän sitten ObtainBestPen()-funktiota varaamaan sopivia kyniä. Nyt nämä kynät sitten tallennetaan vielä List-rakenteeseen, josta ne ohjelman lopussa käydään vapauttamassa ReleasePen()-funkkarilla..kuulostaako järkevältä?
   
 Nämä kysymykset liittyvät AmiMemos-ohjelmaan, joka taitaa olla Aminetissa. Ja tuo RGB-arvojen tallennus on uusi feature, eli väsäsin sitä eilen. Vanha versio tallentaa tökerösti vain kynien numerot, jotka hyvällä tsägällä voivat olla melkein samaa väriä
   
 
 |  |       
 Piru
 
 | Rajaton määrä ikkunoita: sharedidcmp.c| Lauantaina,  15. maaliskuuta, 2003 - klo 15.33: |  | 
 
 Tuo kynäjuttu kuulostaa aika järkevältä, tosin yleensä riittää että tallentaa vai 24bit RGB arvon, noita ylimääräisiä 72 bittiä ei koskaan käytetä.
 
 
 |  |       
 Jon
 
 | Joo, kiitos koodista. Pitää tutustua. (prkl:n Windows avaa sen tietenkin VisualStudiolla| Lauantaina,  15. maaliskuuta, 2003 - klo 18.39: |  | 
   
 Haittaako, jos lainaan koodia tarpeen vaatiessa?
 
 Jep, turhaa dataa menee tiedostoon, mutta ei kuitenkaan ihan overkilliksi asti. Ilmeisesti joutuisi ohjelmallisesti sitten käpistelemään niitä bittejä.
 
 Lasken äkkiä että jos jollakin on 20 memo-ikkunaa (tuskin), niin siitä tulee sitten 20 * 2 * 4 tavua = 160 tavua enemmän, kuin jos tallentaa RGB-arvon yhteen ULONGiin. Ehkä se siinä ja siinä kannattaa kooditasolla, pitää testata
   
 
 |  |       
 JPQ
 
 | Samaa mitä tuo Jon kyseli haittaako koodin lainaus ? en tiedä onko koskaan tarpeen mutta.| Lauantaina,  15. maaliskuuta, 2003 - klo 20.07: |  | 
 
 
 |  |       
 Jon
 
 | Jotain häikkää nyt omassa koodissa. GCC:llä käännetty koodi antaa luoda 7 ikkunaa, yksi signaali on varattu Timer.devicelle, kun taas VBCC-käännös antaa luoda 15 ikkunaa (yksi Timerille).| Lauantaina,  15. maaliskuuta, 2003 - klo 21.29: |  | 
 
 Kummallista! Koodi on sama. Kukaan törmännyt vastaavaan?
 
 
 |  |       
 Piru
 
 | Tuon koodin headerissa sanon että se on public domainia, eli sitä saa abusata miten mielii.| Sunnuntaina,  16. maaliskuuta, 2003 - klo 5.51: |  | 
 
 Eli ollaan hereillä...
   
 
 |  |       
 JPQ
 
 | Piru: niinpä sanotaankin minä ainakin tiedän mutta kun minä en näitä kaikkia lisenssi ehto vaihtoehtoja muista ulkoa.Koska Freeware ja Public Domain melkein muttei täysin sama asia.| Sunnuntaina,  16. maaliskuuta, 2003 - klo 14.42: |  | 
 
 
 |  |       
 Piru
 
 | JPQ: Ehhh. Ne on täysin eri asia. Freeware EI ole vapaasti abusoitavaa, eli kirjoittaja ei ole luopunut oikeuksistaan.| Sunnuntaina,  16. maaliskuuta, 2003 - klo 15.28: |  | 
 
 
 |  |       
 itix
 
 | Jon: Käytätköhän jotain ixemul-startuppia tai vastaavaa? Myös GCC:llä saa kaikki 16 signaalibittä käyttöön mutta tietynlaiset startupmoduulit varaa niitä omaan käyttöönsä.| Sunnuntaina,  16. maaliskuuta, 2003 - klo 17.38: |  | 
 
 
 |  |       
 Jon
 
 | Mitäs mulla lukeekaan makefilessa... -noixemul -s -MC68020 ainakin ulkomuistista. Heh, mulla onkin kunnolla ongelmia nyt kun en saanut Pirunkaan vinkeillä jaetulla portilla toimimaan. Lisäksi on jotain muistivuotoa yms. "kivaa".| Sunnuntaina,  16. maaliskuuta, 2003 - klo 18.22: |  | 
 
 Huom. Pirun koodi toimii eikä vuoda muistia.
   
 Eli jostain syystä en saa todellakaan luotua enempää ikkunoita vaikka käytin CreateMsgPort()-funktiota, ja annoin sen portin kaikille ikkunoille käyttöön. Varmuuden vuoksi disabloin vielä timer.devicenkin käyttö mutta ei se vaikuttanut asiaan. On niin hubaa että jatkuu varmaan ensi viikolla ;)
 
 Mutta mistä se sitten johtuu, että kun laittaa optioksi -noixemul niin kuitenkin saattaa tulla jotain virherequestereita jotka mainitsevat ixemulista jotain?
 
 
 |  |       
 Jon
 
 | Ähhh. Eihän se linkannutkaan -noixemulilla, oli väärään kohtaan lipsahtanut parametri. GCC/VBCC-ongelma siis ratkesi. Siksi nuo Ixemul-requesteritkin...| Sunnuntaina,  16. maaliskuuta, 2003 - klo 23.09: |  | 
 
 Muut bugit odottavat lahtausta...
 
 
 |  |       
 Jon
 
 | Noniin. Eli akkunalle ei saanutkaan esimääritellä niitä napattavia IDCMP-viestejä, vaan ne piti ottaa käyttöön myöhemmin ModifyIDCMP()-funktiolla.| Torstaina,  20. maaliskuuta, 2003 - klo 23.16: |  | 
 
 Näin se homma etenee.
 
 
 |  |       
 itix
 
 | Juju perustuu siihen että Intuition jättää viestiportin tekemättä jos IDCMP-lippuja ei ole. ModifyIDCMP()-funktioon liittyy samantapaisia sivuvaikutuksia joten kannattaa vilkaista autodocit ettei tule ikäviä yllätyksiä| Keskiviikkona,  2. huhtikuuta, 2003 - klo 0.08: |  | 
   
 
 |  |       
 JPQ
 
 | itix: olikos yksi se että valikoita ei saa jos haluaa oikean hiiren napin tilasta tietoja? jotain tuollaista käsitin joskus.| Keskiviikkona,  2. huhtikuuta, 2003 - klo 1.13: |  | 
 
 
 |  |       
 JPQ
 
 | Piru: tuleekohan niille ylimääräisille biteille koskaan käyttöä jännä nähdä edes osittain siis...Matroxillalhan on se joku 10-bit RGB arvot salliva kortti kait ja 12-bit harmaa sävyt salliva lääke tieteenkäyttöön....| Keskiviikkona,  2. huhtikuuta, 2003 - klo 1.15: |  | 
 
 
 |  |       
 itix
 
 | JPQ: Valikot kyllä saa mutta se vaatii hiukan kikkailua. Normaalistihan jos WFLG_RMBRAP on päällä niin valikoita ei saa. Mutta ongelmiin on aina ratkaisu| Keskiviikkona,  2. huhtikuuta, 2003 - klo 3.26: |  | 
  WFLG_RMBTRAPin saa nimittäin asettaa ja nollata milloin tahansa. Jotkut ohjelmat tekevät sen siten että jos hiiren vie ikkunan ulkopuolelle se pyyhkii RMBTRAPin (valikot päälle) ja ikkunan sisäpuolella RMBTRAP takaisin (valikot pois). 
 Esimerkiksi:
 
 /* Ikkunan ulkopuolella */
 
 Forbid();
 window &= ~WFLG_RMBTRAP;
 Permit();
 
 
 /* Ikkunan sisäpuolella */
 
 Forbid();
 window |= WFLG_RMBTRAP;
 Permit();
 
 
 Käytännössä RMBTRAP pitäisi rajoittaa mahdollisimman pienelle alueelle tietysti.
 
 
 |  |       
 Jon
 
 | Laajennetaanpa vielä GadToolsiin.| Keskiviikkona,  23. huhtikuuta, 2003 - klo 23.25: |  | 
 
 Jos käyttää GT:tä ohjelmassa, niin onko syytä sitten aina käyttää myös GT_GetIMsg() ja GT_ReplyIMsg() -funktioita ikkunoille? Autodoc mainitsee Replyn kohdalla että eksplisiittisesti...ymmärrän tämän niin, että esim. CloseWindowSafelyssä pitää käyttää GT-versiota viestien vastailuun?
 
 (vain yhdessä ikkunassa on GT-nappeja, lopuissa vain grafiikkaa ja tekstiä)
 
 Ps. kummasti alkaa bugit löytyä kun kuukauden päästä palaa asiaan
   
 
 |  |