disable Icon ? [erledigt]

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

disable Icon ? [erledigt]

Beitragvon AUGE_OHR » So, 01. Mär 2015 9:43

hi,

wie bekommt man ein graues "Disable" Icon hin ?
für Bitmap gibt es ja die Function von Günter Beyes aber für Icon finde ich nichts ...

btw : wie lege ich ein neues Icon an ? eine oIcon:Make() gibt es wohl auch nicht ?
Zuletzt geändert von AUGE_OHR am Do, 05. Mär 2015 23:58, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10205
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: disable Icon ?

Beitragvon AUGE_OHR » Do, 05. Mär 2015 23:58

eine Lösung von Diego A. Kerejeta
Code: Alles auswählen
STATIC DLLFUNCTION CreateIcon( p1, p2, p3, p4, p5, p6, p7 ) ;
       USING STDCALL                                        ;
       FROM  USER32.DLL

**************************************
FUNCTION CreateDisabledIcon( oIconIn )
**************************************
LOCAL oBmpIn        := CreateDisabledBmp( oIconIn:getBitmap(), .T. )
LOCAL nBits         := oBmpIn:bits
LOCAL cBuffer       := oBmpIn:setBuffer()
LOCAL nBufferOffset := oBmpIn:bufferOffset
LOCAL nXSize        := oBmpIn:xSize
LOCAL nYSize        := oBmpIn:ySize
LOCAL nRowPadding   := nXSize * nBits % 4
LOCAL nLastPixel    := nBufferOffset + nXSize * nYSize * nBits + nRowPadding * ( nYSize - 1 )
LOCAL nRowLen       := nXSize * nBits / 8 + nRowPadding
LOCAL cXORbitmask   := ''
LOCAL nCont, hIcon, oIconOut

oBmpIn:destroy()

FOR nCont:= nBufferOffset + 1 TO nLastPixel STEP nRowLen
  cXORbitmask:= SubStr( cBuffer, nCont, nRowLen ) + cXORbitmask
NEXT

hIcon = CreateIcon( 0,             ; // application instance 
                    nXSize,        ; // icon width
                    nYSize,        ; // icon height
                    1,             ; // number of XOR planes
                    nBits,         ; // number of bits per pixel
                    nil,           ; // AND bitmask 
                    cXORbitmask )    // XOR bitmask
             
oIconOut:= XbpIcon():new():create()

IF hIcon # 0
   oIconOut:handle:= hIcon
   oIconOut:getIconInfo()
ENDIF
RETURN oIconOut
p.s. die CreateDisabledBmp() Routine ist die von Günter Beyes.
Da diese zur XP Zeit entwickelt wurde scheinen 32PP Bitmaps damit nicht ganz korrekt zu funktionieren.
siehe auch Alaska Newsgroup
XbpBitmap
public.xbase++.support.en
8. Februar 2015
wer also mit 32PP Bitmaps arbeitet und eine "saubere" Lösung benötigt wende sich an Diego.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10205
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg


Zurück zu Windows, API

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast