|
| As Any Fra : Peter |
Dato : 19-07-02 23:05 |
|
Jeg sidder med et program fra VB6 og skal have det over i VB.Net og
selvfølgelig er der problemer med konverteringen. Den første fejl omhandler
As Any variablen som ikke må bruges i en decleration i VB.Net
As Any bliver brugt som følger:
-----------------
Private Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef
lpvParam As Any, ByVal fuWinIni As Long) As Long
------------------
Da jeg egentlig aldrig har brugt 'As Any' selv har jeg ret svært ved at
konvertere den/skifte den ud med noget andet.
Senere bruges kaldet i:
----------------
Dim rc As RECT
SystemParametersInfo SPI_GETWORKAREA, 0, rc, 0
Me.Move (rc.Right * 15) - Me.Width, (rc.Bottom * 15) - Me.Height
----------------
'rc' er As Any og bliver dimmet med RECT som er en Private Type:
------------
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
-------------
Tilbage til problemet: Hvad kan jeg skifte As Any ud med i:
-------------------
Private Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef
lpvParam As Any, ByVal fuWinIni As Long) As Long
-------------------
idet at VB.Net ikke vil acceptere As Any ?
Løsning og en evt forklaring ville være dejligt =)
Hilsen fra Peter
| |
Bo Larsson (20-07-2002)
| Kommentar Fra : Bo Larsson |
Dato : 20-07-02 10:40 |
|
"Peter" <wont@tell.you> wrote:
....
>Tilbage til problemet: Hvad kan jeg skifte As Any ud med i:
>-------------------
>Private Declare Function SystemParametersInfo Lib "user32" Alias
>"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef
>lpvParam As Any, ByVal fuWinIni As Long) As Long
>-------------------
>idet at VB.Net ikke vil acceptere As Any ?
>Løsning og en evt forklaring ville være dejligt =)
>
Det korte svar er: du skal ikke skifte "As Any" ud - du skal skrive
din kode om.
Lidt længere svar: .NET et objektorienteret - i modsætning til
tidligere versioner af Windows, som er hændelsesbaserede. Du skal
derfor bruge .NET's objektmodel for at finde de information, som du
skal bruge.
Det kan fx se sådan ud:
Dim rc As System.Drawing.Rectangle
rc = SystemInformation.WorkingArea()
| |
Peter (20-07-2002)
| Kommentar Fra : Peter |
Dato : 20-07-02 11:11 |
|
"Bo Larsson" <bo.larsson@mail.dk> wrote in message
news:lpbijukjtqtjulefj9rldavns57egarfii@dtext.news.tele.dk...
> "Peter" <wont@tell.you> wrote:
>
> ...
> >Tilbage til problemet: Hvad kan jeg skifte As Any ud med i:
> >-------------------
> >Private Declare Function SystemParametersInfo Lib "user32" Alias
> >"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long,
ByRef
> >lpvParam As Any, ByVal fuWinIni As Long) As Long
> >-------------------
> >idet at VB.Net ikke vil acceptere As Any ?
> >Løsning og en evt forklaring ville være dejligt =)
> >
> Det korte svar er: du skal ikke skifte "As Any" ud - du skal skrive
> din kode om.
Hehe... det er jeg bevidst om
> Lidt længere svar: .NET et objektorienteret - i modsætning til
> tidligere versioner af Windows, som er hændelsesbaserede. Du skal
Mener du ikke VB6 istedet for Windows?
> derfor bruge .NET's objektmodel for at finde de information, som du
> skal bruge.
>
> Det kan fx se sådan ud:
>
> Dim rc As System.Drawing.Rectangle
> rc = SystemInformation.WorkingArea()
Har du en super lang forklaring?
Hilsen fra Peter
| |
Bo Larsson (20-07-2002)
| Kommentar Fra : Bo Larsson |
Dato : 20-07-02 13:20 |
|
"Peter" <wont@tell.you> wrote:
....
>Har du en super lang forklaring?
>
OK, jeg skal prøve og så må andre, som ved mere/bedre supplere.
..NET er - i modsætning til tidligere versioner af Windows - objekt
orienteret hele vejen igennem. Tidligere var der (i hovedtræk) tre
dll'er, som dannede hjertet i Windows: system, kernel og gdi. Disse
dll'er er samlinger af funktionskald, som kan kaldes af alle
programmer (API: Application Programming Interface).
Med .NET er hele kernen blevet objektorienteret og i stedet for at
kalde en bestemt funktion, skal du nu benytte det objekt, som har den
metode eller data, som du skal bruge - det her tilfælde altså objektet
System.Windows.Forms.SystemInformation, som bl.a. har metoden
WorkingArea().
Jeg ved ikke om det blev meget klarere, men ellers må du jo spørge
igen.
| |
Peter (20-07-2002)
| Kommentar Fra : Peter |
Dato : 20-07-02 19:20 |
|
"Bo Larsson" <bo.larsson@mail.dk> wrote in message
news:kekijug82tjplaf04j68mt174dkud7c3di@dtext.news.tele.dk...
> "Peter" <wont@tell.you> wrote:
>
> ...
> >Har du en super lang forklaring?
> >
> OK, jeg skal prøve og så må andre, som ved mere/bedre supplere.
>
> .NET er - i modsætning til tidligere versioner af Windows - objekt
> orienteret hele vejen igennem. Tidligere var der (i hovedtræk) tre
> dll'er, som dannede hjertet i Windows: system, kernel og gdi. Disse
> dll'er er samlinger af funktionskald, som kan kaldes af alle
> programmer (API: Application Programming Interface).
>
> Med .NET er hele kernen blevet objektorienteret og i stedet for at
> kalde en bestemt funktion, skal du nu benytte det objekt, som har den
> metode eller data, som du skal bruge - det her tilfælde altså objektet
> System.Windows.Forms.SystemInformation, som bl.a. har metoden
> WorkingArea().
>
> Jeg ved ikke om det blev meget klarere, men ellers må du jo spørge
> igen.
Dumt spørgsmål der løser mange problemer:
Hvad er forskellen på object og funktion i din sammenhæng (jeg ved udemærket
godt hvad et objekt er og jeg ved også godt hvad en funktion er men det
lader ikke til at jeg fatter det i den her sammenhæng).
Derfor forklar essensen af objektorienteret programmering =)
Hilsen fra Peter
| |
|
|