Ongelma on sellainen, että ohjelma valittaa ByVal 0 parametrista:
Sub LataaTekstuurit() Set Tekstuuri = D3DX.CreateTextureFromFileEx(D3DDevice, App.Path & _ "\tutorial.bmp", D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_UNKNOWN, _ D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, ByVal 0, _ ByVal 0) End Sub
Subi siis sijaitsee moduulissa. Milläs tuon nyt korjaat/korvaat?
En tiedä puhunko nyt ihan täyttä soopaa, mutta eikös ByVal voi olla vain aliohjelman määrittelyssä, ei kutsussa?
Edit: ByVal tulisi siis tuon D3DX.CreateTextureFromFileEx-aliohjelman parametrimäärittelyihin.
Kyllä tuo minulla ainakin toimii kun se on formissa. Ongelma syntyy kun laitan sen moduuliin.
Miksi ByVal pitäisi olla kutsussa?
hunajavohveli kirjoitti:
Miksi ByVal pitäisi olla kutsussa?
Täytyypä myöntää, että en tiedä, miksi, mutta SDK sanoo näin, ja minä uskon sitä.
DirectX SDK kirjoitti:
SrcInfo
A D3DXIMAGE_INFO structure to be filled with a description of the data in the source image file, or ByVal 0.Palette
The first element of an array of 256 PALETTEENTRY types to fill in, or ByVal 0. See Remarks.
Itselläni noita kutsuja on iso kasa Class Modulessa ("Luokkamoduuli"?), ja hyvin toimivat.
hunajavohveli kirjoitti:
Miksi ByVal pitäisi olla kutsussa?
Ööö... toi on DX:ää putkan oppaasta. En ole pahemmin perehtynyt tuon homman suhteen kun ei toi vb meinaa näyttää niitä funktion parametreja tossa ku kirjottaa tota.
Ei niitä parametripaikkoja voi tyhjäksää jättää ni ajattelin kysyä täältä kun ei mikään meinaa auttaa.
Edit: Kappas Blaze ehtikin jo...
Mutta kuinkas niitä luokkamoduulissa olevia subeja/funktioita sitten oikein kutsutaan formissa kun rupes valittaan nyt sitten ettei funktiota ole määritelty?
Gaxx kirjoitti:
Mutta kuinkas niitä luokkamoduulissa olevia subeja/funktioita sitten oikein kutsutaan formissa kun rupes valittaan nyt sitten ettei funktiota ole määritelty?
Dim jee As New munluokka ... jee.munfunkkari
ByVal tarkoittaa, että parametrin arvo välittyy suoraan aliohjelmalle. ByRef taas tarkoittaa, että aliohjelma saa pelkän viittauksen muuttujaan, jolloin se pystyy myös muuttamaan sen arvoa. Jos muuta ei ole määritelty, niin parametrit välitetään viittauksina.
Ongelmaasi en valitettavasti kuitenkaan tiedä ratkaisua. Joka tapauksessa tuntuu vähän oudolta, että luku 0 täytyy nimenomaan välittää suorana arvona, sillä eihän se edes ole mikään muuttuja.
Okei, kiitoksia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.