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
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; }
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].
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.