/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
[VB6] Genopfriskning
Fra : Johnny E Jensen


Dato : 07-05-03 20:00

Hej

Noget som for længest er lagt i glemmebogen.

I forbindelse med mit roden i Menu's via API er jeg faldet over
GetMenuCheckMarkDimensions funktionen der returnere et tal (eks. 851981) der
så i Hi- og Low byte skulle angive checkmark's dimensionen - og hvor'n var
det nu lige det med hi-byte low-byte. Det var hvis nok noget med Hex og
Hex(851981)=D000D eller &H000D000D

Har jeg så ret i at hibyte=4 første ciffer altså '000D' og lowbyte de sidste
4 ciffer.

I dette tilfælde skulle checkmark dimensionen være 13 x 13.

Er det helt forkert??

/Johnny



 
 
Tomas Christiansen (07-05-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 07-05-03 21:35

Johnny E Jensen skrev:
> I forbindelse med mit roden i Menu's via API er jeg faldet over
> GetMenuCheckMarkDimensions funktionen der returnere et tal (eks. 851981)

Bemærk at man IKKE bør bruge GetMenuCheckMarkDimensions, som kun bibeholdes
af hensyn til bagudkompatibilitet med 16-bit Windows-programmer. Du bør i
stedet bruge GetSystemMetrics i kombination med CXMENUCHECK og CYMENUCHECK.

> så i Hi- og Low byte skulle angive checkmark's dimensionen - og hvor'n var
> det nu lige det med hi-byte low-byte. Det var hvis nok noget med Hex og
> Hex(851981)=D000D eller &H000D000D
>
> Har jeg så ret i at hibyte=4 første ciffer altså '000D' og lowbyte de
sidste
> 4 ciffer.

Funktionen returnerer en Long svarende til 4 bytes, og denne værdi skal
opfattes som to stk. 2-bytes værdier (svarende til Integer i VB, kaldet
high-order word og low-order word i MS's API-dokumentation).

Det er helt rigtigt at hvis der returneres værdien 851981, så svarer det til
at både hi-word og lo-word's værdi er 13.

Man kan f.eks. maske værdierne ud med:
851981 \ &H10000 og 851981 And &HFFFF&

Husk for alt i verden den sidste ampersand, ellers vil du løbe ind i en
række af VB's ufattelig kedelige implicitte konverteringer, som ødelægger
resultatet fuldstændig!

-------
Tomas


Johnny E Jensen (07-05-2003)
Kommentar
Fra : Johnny E Jensen


Dato : 07-05-03 22:12

Hey Tomas

Jeg benyttede GetMenuCheckMarkDimensions da denne stod før GetSystemMetrics
(i dette link:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/win
prog/functions_by_category.asp)

Og at disse konstanter CXMENUCHECK og CYMENUCHECK har ikke opgivet deres
værdi.
Dette er faktisk gældende for temmelig mange beskrivelser vedr. API. -
Kender du til en side hvor disse konstanters værdi er listet?

Men tak for svaret...

/Johnny

"Tomas Christiansen" <toc-01-nospam@blikroer.dk> wrote in message
news:b9bqkm$13ag$1@news.cybercity.dk...
> Johnny E Jensen skrev:
> > I forbindelse med mit roden i Menu's via API er jeg faldet over
> > GetMenuCheckMarkDimensions funktionen der returnere et tal (eks. 851981)
>
> Bemærk at man IKKE bør bruge GetMenuCheckMarkDimensions, som kun
bibeholdes
> af hensyn til bagudkompatibilitet med 16-bit Windows-programmer. Du bør i
> stedet bruge GetSystemMetrics i kombination med CXMENUCHECK og
CYMENUCHECK.
>
> > så i Hi- og Low byte skulle angive checkmark's dimensionen - og hvor'n
var
> > det nu lige det med hi-byte low-byte. Det var hvis nok noget med Hex og
> > Hex(851981)=D000D eller &H000D000D
> >
> > Har jeg så ret i at hibyte=4 første ciffer altså '000D' og lowbyte de
> sidste
> > 4 ciffer.
>
> Funktionen returnerer en Long svarende til 4 bytes, og denne værdi skal
> opfattes som to stk. 2-bytes værdier (svarende til Integer i VB, kaldet
> high-order word og low-order word i MS's API-dokumentation).
>
> Det er helt rigtigt at hvis der returneres værdien 851981, så svarer det
til
> at både hi-word og lo-word's værdi er 13.
>
> Man kan f.eks. maske værdierne ud med:
> 851981 \ &H10000 og 851981 And &HFFFF&
>
> Husk for alt i verden den sidste ampersand, ellers vil du løbe ind i en
> række af VB's ufattelig kedelige implicitte konverteringer, som ødelægger
> resultatet fuldstændig!
>
> -------
> Tomas
>



Tomas Christiansen (07-05-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 07-05-03 23:25

Johnny E Jensen skrev:
> Jeg benyttede GetMenuCheckMarkDimensions da denne stod før
GetSystemMetrics
> (i dette link:
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/win
> prog/functions_by_category.asp)

Men du læste ikke beskrivelsen af funktionen ordentlig igennem?

> Og at disse konstanter CXMENUCHECK og CYMENUCHECK har ikke opgivet deres
> værdi.
> Dette er faktisk gældende for temmelig mange beskrivelser vedr. API. -
> Kender du til en side hvor disse konstanters værdi er listet?

Under beskrivelsen af GetSystemMetrics, står at den er erklæret i filen
"Winuser.h". Desuden står at man skal inkludere filen "Windows.h".

Sandsynligheden taler for at CXMENUCHECK og CYMENUCHECK er defineret i én af
disse to header-filer. De KAN dog være defineret i en header-fil, som en af
de to andre inkluderer...

Som udgangspunkt bør man altid lige checke om værdien skulle været defineret
i VB's API Viewer, men pas på: nogle ganske få ting i denne er direkte
forkert defineret/erklæret!

-------
Tomas


Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste