Miten käytän SDL:ää ja Windowsin funktioita samassa ikkunassa vai onko ollenkaan mahdollista? SDL:stä tarvitsisin pelkästään piirtojutut, mutta lopuissa tarvitsen Windows-funktioita.
P.S. en uutta aihetta viitsi aloittaa, joten kysyn samalla, miten saa mitattua mikrosekunteja.
QueryPerformanceCounter-funktiolla saa aika tarkkoja tuloksia, mutta tarkkuudesta en tiedä.
Millaisia WinApi-funktioita haluat käyttää? Mitkä ovat "loput"?
Jos ikkunan kahvaa kaipaat, sen saa kyllä SDL:ltä kysyttyä jokseenkin näin.
SDL_SysWMinfo info; SDL_GetWMInfo(&info); HWND kahva = info.window;
MIDI, ääni (kai sekin winapista löytyy?), erilaiset vieritys- ja muut palkit, MessageBoxit, oikean hiiren napin menut yms. kuuluvat "loppuihin".
SDL on paketissa mukana sen helppokäyttöisyyden ja tehokkuuden vuoksi. Esimerkiksi jos haluan avata muita kuin bmp-formaatin kuvia, SDL:stä on paljon hyötyä. Kyllähän sekin ilman SDL:ää onnistuu, mutta sovitaan että se otetaan silti mukaan.
EDIT: siis kyseisillä WMinfo-jutuilla pitäisi saada ikkuna windowsin käyttöön, vai ymmärsinkö väärin? Ei oikein toimi... Tulee SDL-ikkuna, johon winapi-käskyillä ei ole vaikutusta sekä windows-ikkuna. Jotain vaikutusta koodinpätkällä kuitenkin on, koska nyt windows-ikkunaa ei tule ellei SDL-ikkunaa voi tehdä.
Ei enää saanu edittiä joten jatkan uudella viestillä.
Nyt ilmeisesti tajusin mikä tuossa ikkunajutussa on ideana. Siihen piirretään vain SDL:llä, mutta kaikki muut asiat saa hoidettua winapilla, niinkö? Onnistuuko silloin esimerkiksi sen ylhäällä olevan palkin tekeminen (file,edit...)?
WinApiin liittyen midin kanssa on tullut ongelmia. Tälläinen netistä löytämäni pätkä
HMIDIIN inHandle; HMIDIOUT outHandle; result = midiOutOpen(&outHandle, (UINT)-1, 0, 0, CALLBACK_WINDOW); if (result) { printf("There was an error opening MIDI Mapper!\r\n"); } /* Open the MIDI In device #0. Note: myWindow is a handle to some open window */ result = midiInOpen(&inHandle, 0, (DWORD)hwnd, 0, CALLBACK_WINDOW); if (result) { printf("There was an error opening the default MIDI In device!\r\n"); }
tuottaa valitukset
[linker error] undefined reference to 'midiOutOpen@20'
[linker error] undefined reference to 'midiInOpen@20'
Mikä koodissa on pielessä?
Nuo multimediaroippeet pitää erikseen linkata mukaan, jos käytät VC++:aa niin kirjaston nimi on "winmm.lib".
Aihe on jo aika vanha, joten et voi enää vastata siihen.