Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Stringeissä vikaa

temu92 [06.01.2006 20:52:27]

#

olen vielä tosi n00b näitten c++ juttujen kanssa. miten tästä saisi sellaisen, että kun kutsutaan funktiotani msgbox aukeaa messagebox ikkunaan.

#include <windows.h>
#include <string.h>

void msgbox(char viesti, char otsikko);

int main(void) {
    msgbox('Moro kaikille', 'Hähhähhää');
    return 0;
}

void msgbox(char viesti, char otsikko) {
       MessageBox(NULL , viesti[strlen(viesti)], otsikko[strlen(viesti)], MB_OKCANCEL|MB_ICONINFORMATION);
}

teen omaa DLL kirjastoa coolbasicille

Juice [06.01.2006 21:22:39]

#

Tämmöistä olen itse käyttänyt:

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


using namespace std;

#include <windows.h>

extern "C" void MsgBox(char*);

extern "C" void DLLIMPORT MsgBox (char *str)
{
        MessageBox (0, str,"Hello", MB_ICONINFORMATION);
}


BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
DWORD reason        /* Reason this function is being called. */ ,
LPVOID reserved     /* Not used. */ )
{
        switch (reason)
        {
                case DLL_PROCESS_ATTACH:
                break;

                case DLL_PROCESS_DETACH:
                break;

                case DLL_THREAD_ATTACH:
                break;

                case DLL_THREAD_DETACH:
                break;
        }

        /* Returns TRUE on success, FALSE on failure */
        return TRUE;
}

Antti Laaksonen [06.01.2006 21:25:41]

#

Tässä on koodisi paranneltu versio. Koodi on muuten pelkkää C:tä.

#include <windows.h>

void msgbox(char *viesti, char *otsikko);

int main(void) {
    msgbox("Moro kaikille", "Hähhähhää");
    return 0;
}

void msgbox(char *viesti, char *otsikko) {
    MessageBox(NULL , viesti, otsikko, MB_OKCANCEL | MB_ICONINFORMATION);
}

Yksittäinen merkki kirjoitetaan heittomerkkeihin, kokonainen merkkijono kirjoitetaan lainausmerkkeihin. Aliohjelmalle tulee antaa parametriksi osoitin merkkijonoon, jota voi ajatella char-taulukkona. Siis yksi char-muuttuja on yksi merkki.

Merkkijonoista pitää ilmoittaa ensimmäisen merkin osoite muistissa. Taulukon alkioon viitataan hakasuluilla. viesti[0] on merkkijonon ensimmäinen merkki. Pelkkä viesti on osoite ensimmäiseen merkkiin. Yhtä hyvin voitaisiin kirjoittaa &viesti[0].

temu92 [06.01.2006 21:54:14]

#

Hyvin näyttäis toimivan. alotin vasta alle viikko sitten ehkä 3-4 päivää sitten. Jotain osaankin jo kun olen koheltanut kaikenlaisia koodivinkkejä ja muita esimerkkejä

EDIT: Nyt olis sitten käännön vuoro. Miten saisin funktioni käännettyä DLL-kirjastoksi? Käytän Dec-Cpp:tä ja Mingw:tä
EDIT2: Se löytyikin jo.

Vastaus

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

Tietoa sivustosta