Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: SDL&WinAPI

KoodiNoppa [02.09.2007 22:13:13]

#

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.

Pöytälamppu [03.09.2007 14:56:34]

#

QueryPerformanceCounter-funktiolla saa aika tarkkoja tuloksia, mutta tarkkuudesta en tiedä.

Millaisia WinApi-funktioita haluat käyttää? Mitkä ovat "loput"?

Metabolix [03.09.2007 15:29:38]

#

Jos ikkunan kahvaa kaipaat, sen saa kyllä SDL:ltä kysyttyä jokseenkin näin.

SDL_SysWMinfo info;
SDL_GetWMInfo(&info);
HWND kahva = info.window;

KoodiNoppa [03.09.2007 15:36:38]

#

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ä.

KoodiNoppa [03.09.2007 17:28:27]

#

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ä?

thefox [03.09.2007 17:30:56]

#

Nuo multimediaroippeet pitää erikseen linkata mukaan, jos käytät VC++:aa niin kirjaston nimi on "winmm.lib".

Vastaus

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

Tietoa sivustosta