Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: HTML-koodi wxMemosta nettiselaimelle

Sivun loppuun

Jartsala [10.03.2007 10:19:25]

#

Elikäs ohjelma on wxDev-C++
Ja haluaisin kun painan tätä yhtä nappia se avaa WxMemo1:sen nettiselaimeen, kuinkapas olisi mahdollista? Teen nimittäin HTML editoria ja täytyisi saada esikatselu nappi toimimmaan, muuten toimii iha hyvi!

Toinen kysymys, olen tehnyt nappulan jolla saa memoon tämän tehtyä
<center> text </center>
mutta se tulee aina memon loppuun, saisiko sen jotenkin että se tulee siihen kohtaan missä on kirjoittamassa?

Kolmas kysymys, kun painaa nappia miten saa sillein että siihen tulee lätkä jossa lukee jotain ja OK nappi jolla saa lätkän pois?

Jartsala [10.03.2007 11:28:43]

#

Ja lisää tuloo XD
mikä tässä on vikana???

void HTML_editorFrm::WxButton3Click(wxCommandEvent& event)
{
    if (WxEdit1.a == 1) {
                      WxMemo1->AppendText(wxT("<H1> kirjoita </H1>"));
                      }

}

void HTML_editorFrm::WxEdit1Enter(wxCommandEvent& event)
{
	int a;
	a = Text;
}

eli yritän saada sillein että jos tekstikentässä lukee 1 ja napiia painaa ni tapahtuu tuo kirjoitus sydeemi?!?

MITEN IF LAUSEET TOIMIVAT???

Metabolix [10.03.2007 11:33:40]

#

Koodi täytyy tallentaa väliaikaistiedostoon (tmpnam-funktio voi auttaa, muista .html-pääte selaimen iloksi). Toinen mahdollisuus olisi koodata ohjelman sisään pieni HTTP-palvelin, mutta se tuskin on vaivan arvoista, kun tuntuvat edellisen ketjun perusteella olevan vielä vähän hakusessa helpommatkin jutut.

If-lauseista voit lukea C-oppaasta. Kannattaa lukea sieltä muistakin asioista ja ihan oikeasti opetella perusasiat oppaasta. Tuollaisia kyselemällä saa yllättävän paljon porukkaa pahalle päälle. (Eikä vika taida nyt edes olla if-lauseessa vaan kaikessa muussa mahdollisessa.)

Tuossa viimeisimmässäsi koodissa ei ole yhtään mitään järkeä. Pitäisi sitä tekstiä tutkia, verrata vaikka tekstiin "1". wxString-tyyppiä noissa kaiketi käytetään, eli ensin pitää tehdä wxString, jossa lukee "1".

TsaTsaTsaa [10.03.2007 11:51:26]

#

Yleinen ohje:
Kannattaisi ehkä vielä toistaiseksi pysytellä konsoliohjelmien parissa ja opetella niiden kanssa perusasiat kuntoon ja siirtyä graafisiin ohjelmiin sitten vasta kun alkaa olla kaikki luokat ja osoittimet ynnä muut kunnolla ymmärryksessä.

Jartsala [10.03.2007 13:04:27]

#

on ne ymmärryksessä mutta tässä wxDevissä ne on taas ihan eri tavalla tehtävä...

Jartsala [10.03.2007 15:48:23]

#

Ok olen päättänyt yrittää reilusti helpompaa, kysymys, miten saan alustettua muuntajan vaikka nappulalle nimeltä WxButton1?? sillein että sitä ei tarvi painaa vaan Createssa
a = 1;
mihin laitan tuon...

Metabolix [10.03.2007 22:59:17]

#

Muuttuja, ei muuntaja.
Et voi sitä wxButton-luokkaan lisätä, mutta voit tehdä globaalin muuttujan. Tällöin kannattaa antaa sille kuvaavampi nimi kuin vain a.

Jartsala [11.03.2007 19:08:03]

#

mites muuttujasta tehdään globaali, lieneekö se samanlailla kuin eräässä toisessa ohjelmassa global.a?

TsaTsaTsaa [11.03.2007 19:24:36]

#

Muuttuja on globaali, jos se määritellään kaikkien funktioiden, luokkien yms. ulkopuolella eli vaikka heti #include-rivien jälkeen, tyyliin:

#include <iostream>
#include <cstdlib>

int luku = 983; // Tämä on globaali muuttuja
const int KISSOJENI_MAARA = 129; // Tämä taas on globaali VAKIO


void kasvata() {
    luku++;  // Tämä onnistuu
    laku++;  // Tämä ei mene kääntäjästä läpi
}


int main() {
    int laku = 12; // Tämä ei ole globaali muuttuja
    std::cout << laku << luku << endl;
    luku++;
    laku++;
    std::cout << laku << luku << endl;
    kasvata();
    std::cout << laku << luku << endl;
    return EXIT_SUCCESS;
}

Globaalia muuttujaa voi käyttää/muuttaa kaikissa funktioissa yms. ilman, että sitä tarvitsee viedä parametrina. Globaalia vakiota voi vastaavasti käyttää kaikkialla, mutta sitä ei voi muuttaa.

Metabolix [11.03.2007 20:12:04]

#

TsaTsaTsaa (ja kaikki muutkin): myös endl on std-nimiavaruudesta kotoisin. Siis endl:n paikalle kuuluu std::endl.

koo [11.03.2007 21:42:10]

#

Vaikka kommentti toista väittää, KISSOJENI_MAARA ei ole tuossa esimerkkipätkässä globaali vakio. C++:ssa globaalit vakiot pitää määritellä extern-sanalla. Siis

extern const int KISSOJENI_MAARA = 129; // Tämä ON globaali VAKIO

Jotta globaaleja muuttujia ja vakioita voisi käyttää kaikkialla, siis muissa kooditiedostoissa, ne pitää esitellä ennen käyttöä extern-sanalla. Siis

extern int luku; // Esitellään muualla määritelty globaali muuttuja
extern const int KISSOJENI_MAARA; // Huom: ei arvojen alustusta

Yleensä globaalit muuttujat ovat aika huono juttu, kun niitten arvoja voidaan lukea ja kirjoittaa mistä sattuu. Mutta tässä taidetaan olla muutenkin aika liemessä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta