Français
Forum

Bitmap / Icon-DLL avec XProfan erzeugen?? changement??

 

KHR
allô miteinander,

.

momentan hab je là quelques Programme dans qui fais, qui bitmaps ou bien Icônes aus ner DLL verwenden. cela klappt dank Eurer Aider oui pas mal.

maintenant viens je mais lente dans den Bereich, wohin je qui Inhalte cette DLL pas seulement avec einem Ressourcen-Tool mais aussi de einem XProfan-Programme aus changement ou bien gar anlegen peut sollte.

Hab je là nen einfachen Weg übersehen?

ou bien meint son: Laß qui Finger weg - is trop komplex?

qui peux mir Tips donner?
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
23.02.2009  
 




Andreas
Miethe


je serait dire weitermachen ! Ist pas so schwer.
KompilierenMarqueSéparation
#############################################
Bitmaps als Resource in eine Dll einbinden
#############################################
nur für NT-basierende Windows-Versionen
#############################################
XPROFAN 11.1
#############################################
 $H Windows.ph
cls ~GetsysColor(~COLOR_BTNFACE)
Print Ich bin ein Test
Bitmap zu Testzwecken anlegen
Var Testname$ = Test.bmp
Var Testpic& = Create(hPic,0,&SCRBMP)
SavePic Testname$,Testpic&
Var hUpdate& = ~BeginUpdateResource(Leer32.dll,0)
Parameter 1 = Pfad zur Dll ( anpassen )
Parameter 2 = BOOL fuer alle Resourcen loeschen (1 oder Null)
Declare FileData#,Size&
Dim FileData#,FileSize(Testname$)
Assign #1,Testname$
OpenRW #1
Size& = @BlockRead(#1,FileData#,0,FileSize(Testname$))
CloseRW #1
~UpdateResource(hUpdate&,~RT_BITMAP,11,~GetSystemDefaultLangID(),FileData#,Size&)
UpdateResource für alle Resourcen ausführen die eingefügt werden sollen
sind die beiden letzten Parameter = NULL wirddie Resource gelöscht
Dispose FileData#
~EndUpdateResource(hUpdate&,0)
EndUpdateResource fügt alle Resourcen in die Dll ein und schliesst die Operation ab
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
23.02.2009  
 



So simple(?)
 
23.02.2009  
 




Andreas
Miethe


iF
So simple(?)


oui bien sûr, mais seulement si on weiss comme allez
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
23.02.2009  
 



Gehör je maintenant avec trop!
 
23.02.2009  
 




Uwe
''Pascal''
Niemeier
Hi Andreas!



Würde cela aussi avec Interpreter / Runtime (ungelinkt) marcher (sur %HInstance ou bien anstelle qui dll geladen)? Z.B. à Taille qui enthaltenen Icônes trop changement bzw. selbige trop ersetzen?

SeeYou
Pascal
 
23.02.2009  
 




KHR
allô Andreas,

.

sûrement peux je maintenant pas dire, qui je dazugehöre
je kanns zwar anwenden, mais quoi je là ensuite fais sais je pas so droite.

Zum anderen va es chez mir simple encore pas. Doit encore légèrement essayer. si es ensuite pas klappt komm je wieder zum rumheulen her.

.

Den code avec dem auslesen qui Bitmap-Namen hab je oui aussi longtemps pas kapiert. et cela umstricken hat seulement geklappt, weil je pour chacun Code-Changement ausprobiert habe obs encore fonctionne. si oui - un Schritt plus, si pas - 1 Schritt zurück. et chacun Zwischenversion abgespeichert.
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
23.02.2009  
 




Andreas
Miethe


Uwe Pascal Niemeier
Hi Andreas!



Würde cela aussi avec Interpreter / Runtime (ungelinkt) marcher (sur %HInstance ou bien anstelle qui dll geladen)? Z.B. à Taille qui enthaltenen Icônes trop changement bzw. selbige trop ersetzen?

SeeYou
Pascal


Du musst en supplément Schreibrechte avons. cela heisst qui Dossier darf trop dem la date pas fonctionnement volonté. Es wird aussi ne...aucune Handle mais un Filename$ comme paramètre erwartet.
direct zur Laufzeit ca va alors pas.
un Programme trop écrivons, dass qui Resourcen avant dem Linken ändert ist possible, après peux qui Linker oui per main aufgerufen volonté.
chez Icônes wird es allerding déjà schwieriger ( stichwort MultiIcons ).

j'ai ici encore une alten Code rumliegen. la fois voyons si je es schaffe den pour XProfan trop portieren.
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
23.02.2009  
 




Andreas
Miethe


j'ai den alten Code umgefummelt.
Ist peut-être une gute concept den simple comme Include einzubinden.
Hoffe es avons sich aucun faute eingeschlichen.
KompilierenMarqueSéparation
 $H Windows.ph
###########

Proc ClearAll

    Parameters Filename$
    Declare hUpdate&
    hUpdate& = ~BeginUpdateResource(ADDR(FileName$),1)alle Resourcen loeschen
    ~EndUpdateResource(hUpdate&,0)

EndProc

###########

Proc AddBmp

    Parameters FileName$,ResFile$
    Declare FileData#,Size&,IsBMP$
    ResFile$ = Upper$(Resfile$)
    Dim FileData#,FileSize(ResFile$)
    Assign #1,ResFile$
    OpenRW #1
    Size& = @BlockRead(#1,FileData#,0,FileSize(ResFile$))
    IsBMP$ = Chr$(Byte(Filedata#,0))+ Chr$(Byte(Filedata#,1))

    If IsBMP$ = BM

        ~UpdateResource(hUpdate&,~RT_BITMAP,ADDR(ResFile$),~GetSystemDefaultLangID(),ADDR(FileData#)+14,SizeOf(FileData#)-14)
        CloseRW #1
        Dispose FileData#

    Endif

EndProc

###########

Proc DelBmp

    Parameters FileName$,ResFile$
    Declare Mod&
    ResFile$ = Upper$(Resfile$)
    Mod& = UseDll(Filename$)

    If ~FindResource(Mod&,Addr(Resfile$),~RT_BITMAP)

        FreeDll Mod&
        ~UpdateResource(hUpdate&,~RT_BITMAP,ADDR(ResFile$),~GetSystemDefaultLangID(),0,0)

    Endif

EndProc

###########

Proc AddUSER

    Parameters FileName$,ResFile$,My$
    Declare FileData#,Size&
    ResFile$ = Upper$(Resfile$)
    Dim FileData#,FileSize(ResFile$)
    Assign #1,ResFile$
    OpenRW #1
    Size& = @BlockRead(#1,FileData#,0,FileSize(ResFile$))
    ~UpdateResource(hUpdate&,Addr(My$),ADDR(ResFile$),~GetSystemDefaultLangID(),ADDR(FileData#),SizeOf(FileData#))
    CloseRW #1
    Dispose FileData#

Endproc

###########

Proc DelUSER

    Parameters FileName$,ResFile$,My$
    Declare Mod&
    ResFile$ = Upper$(Resfile$)
    Mod& = UseDll(Filename$)

    If ~FindResource(Mod&,Addr(Resfile$),Addr(My$))

        FreeDll Mod&
        ~UpdateResource(hUpdate&,Addr(My$),ADDR(ResFile$),~GetSystemDefaultLangID(),0,0)

    EndProc

    ###########

    Proc AddCursor

        Parameters Filename$,Resfile$
        Declare FileData#,size&
        ResFile$ = Upper$(Resfile$)
        Dim FileData#,FileSize(ResFile$)
        Assign #1,ResFile$
        OpenRW #1
        Size& = @BlockRead(#1,FileData#,0,FileSize(ResFile$))
        CloseRW #1
        ~UpdateResource(hUpdate&,~RT_CURSOR,ADDR(ResFile$),~GetSystemDefaultLangID(),ADDR(FileData#)+18,Size&-18)
        Dispose FileData#

    EndProc

    ###########

    Proc DelCursor

        Parameters FileName$,ResFile$
        Declare Mod&
        ResFile$ = Upper$(Resfile$)
        Mod& = UseDll(Filename$)

        If ~FindResource(Mod&,Addr(Resfile$),~RT_CURSOR)

            FreeDll Mod&
            ~UpdateResource(hUpdate&,~RT_CURSOR,ADDR(ResFile$),~GetSystemDefaultLangID(),0,0)

        Endif

    EndProc

    ###########

    Proc AddIcon

        Parameters Filename$,Resfile$
        MultiIcons

        Proc GetLastIconNum

            Parameters hModul&
            set(FastMode,1)
            ~EnumResourceNames(hModul&,3,ProcAddr(ResNames,4),0)

            Proc ResNames

                Parameters hModul&,lpszType&,lpszName&,lParam&

                If lpszName& & $FFFF0000

                    AddString(l&,String$(lpszName&,0))

                else

                    AddString(l&,Str$(lpszName&))

                Endif

                Return 1

            EndProc

            set(FastMode,0)

        EndProc

        Proc GetIconZahl

            Declare Ret&,Size#
            Parameters file$
            Dim Size#,2
            FileMode 0
            Assign #1,file$
            OpenRW #1
            Seek #1,4
            wieviele Icons sind im File ?
            BlockRead(#1,Size#,0,2)
            Ret& = @Word(Size#,0)
            close #1
            Dispose size#
            Return Ret&

        EndProc

        Proc GetIconDimensions

            Declare Icons&,x%,Size#
            Parameters file$
            Dim Size#,16
            FileMode 0
            Let x% = 0
            Assign #1,file$
            OpenRW #1

            whilenot x% = anzahl%

                zum Einstiegspunkt der einzelnen Icons
                Seek #1,6+(x%*16)
                BlockRead(#1,Size#,0,16)
                Breite%[x%]   = @Byte(size#,0)
                hoehe%[x%]    = @Byte(size#,1)
                farben%[x%]    = @Byte(size#,2)
                reserved%[x%] = @Byte(size#,3)
                colplanes%[x%] = @word(size#,4)
                bitspixel%[x%] =  @word(size#,6)
                bytesinres%[x%] =  @long(size#,8)
                offset%[x%] =  @word(size#,12)
                Inc x%

            EndWhile

            CloseRW #1
            FileMode 2
            Dispose Size#

        EndProc

        Proc DrawSingleIcon

            Parameters Ico$,x%
            Declare FileHeader#,Dummy#
            Dim Fileheader#,22
            Fileheader fuer Icon anlegen
            word fileheader#,0 = 0
            word fileheader#,2 = 1Icon
            word fileheader#,4 = 1How many Images
            byte fileheader#,6 = Breite%[x%]width
            byte fileheader#,7 = Hoehe%[x%]height
            byte fileheader#,8 = farben%[x%]colorcount
            byte fileheader#,9 = reserved%[x%]reserved
            word fileheader#,10 = colplanes%[x%]colorplanes
            word fileheader#,12 = bitspixel%[x%]bitcount
            long fileheader#,14 = bytesinres%[x%]BytesInRes
            long fileheader#,18 = 22ImageOffset
            Daten EinzelIcon auslesen
            Dim Dummy#,bytesinres%[x%]
            assign #1,ico$
            OpenRW #1
            Seek #1,offset%[x%]
            BlockRead(#1,dummy#,0,bytesinres%[x%])
            close #1
            ~UpdateResource(hUpdate&,~RT_ICON,x%+LastIcon&+1,~GetSystemDefaultLangID(),dummy#,bytesinres%[x%])
            Dispose FileHeader#

        endproc

        Proc DrawMultiIcon

            Parameters Ico$,anzahl%
            Declare FileHeader#,xxxx%,x%
            Dim Fileheader#,(20*anzahl%)
            xxxx% = 0
            word fileheader#,0 = 0
            word fileheader#,2 = 1Icon
            word fileheader#,4 = anzahl%How many Images

            Whilenot x% = anzahl%

                byte fileheader#,6+xxxx% = Breite%[x%]width
                byte fileheader#,7+xxxx% = Hoehe%[x%]height
                byte fileheader#,8+xxxx% = farben%[x%]colorcount
                byte fileheader#,9+xxxx% = reserved%[x%]reserved
                word fileheader#,10+xxxx% = colplanes%[x%]colorplanes
                word fileheader#,12+xxxx% = bitspixel%[x%]bitcount
                long fileheader#,14+xxxx% = bytesinres%[x%]BytesInRes
                word fileheader#,18+xxxx% = x%+Lasticon&+1ID
                xxxx% = xxxx% + 14
                Inc x%

            endwhile

            ~UpdateResource(hUpdate&,~RT_GROUP_ICON,Addr(ico$),~GetSystemDefaultLangID(),FileHeader#,sizeOf(Fileheader#))
            Dispose FileHeader#

        EndProc

        ResFile$ = Upper$(Resfile$)
        Declare d&,l&
        d& = UseDll(Filename$)
        l& = Create(SortedListBox,%hwnd,,0,0,0,0)
        GetLastIconNum(d&)
        Var LastIcon& = val(GetString$(l&,GetCount(l&)-1))
        Freedll d&
        Destroywindow(l&)
        Declare anzahl%
        anzahl% = GetIconZahl(ResFile$)  Anzahl der enthaltenen Icons holen
        Arrays deklarieren
        Declare breite%[anzahl%]
        Declare hoehe%[anzahl%]
        Declare farben%[anzahl%]
        Declare colplanes%[anzahl%]
        Declare reserved%[anzahl%]
        Declare bitspixel%[anzahl%]
        Declare bytesinres%[anzahl%]
        Declare offset%[anzahl%]
        Declare Ico&[anzahl%]
        Werte der einezelnen Icons in die Arrays bringen
        GetIconDimensions(ResFile$)
        Declare xxx%

        Whilenot xxx% = anzahl%

            DrawSingleIcon(resfile$,xxx%)
            inc xxx%

        wend

        DrawMultiIcon(resfile$,anzahl%)

    EndProc

    ############

    Proc DelICON

        Parameters FileName$,ResFile$
        Declare Mod&
        Declare hFind&,hGlobal&,hLock&,Icons&,X%,xxxx%,Index$
        ResFile$ = Upper$(Resfile$)
        Mod& = UseDll(Filename$)
        hFind& = ~FindResource(Mod&,Addr(Resfile$),~RT_GROUP_ICON)

        If hFind&

            hGlobal& = ~LoadResource(Mod&,hFind&)
            hLock& = ~LockResource(hGlobal&)
            Icons& = word(hLock&,4)
            Declare IconIndex&[icons&]

            Whilenot x% = Icons&

                IconIndex&[x%] = Word(hLock&,18+xxxx%)
                xxxx% = xxxx% + 14
                Inc x%

            endwhile

            X% = 0

            Whilenot x% = Icons&

                ~UpdateResource(hUpdate&,~RT_ICON,IconIndex&[x%],~GetSystemDefaultLangID(),0,0)
                Inc x%

            Endwhile

            ~UpdateResource(hUpdate&,~RT_GROUP_ICON,ADDR(ResFile$),~GetSystemDefaultLangID(),0,0)

        Endif

        FreeDll Mod&

    EndProc

    BEISPIEL
    cls
    ClearAll(Leer32.dll)
    Var hUpdate& = ~BeginUpdateResource(Leer32.dll,0)
    AddIcon(Leer32.dll,Ram.ico)Icons
    AddBmp(Leer32.dll,Test.bmp)Bitmaps
    AddCursor(Leer32.dll,3dgmove.cur)Cursor
    AddUser(Leer32.dll,Test.bmp,Mein Bild)Userresource, nom libre wählbar
    ~EndUpdateResource(hUpdate&,0)
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
23.02.2009  
 




Uwe
''Pascal''
Niemeier
Hi Andreas!

cela wird sich sûrement encore comme Nützlich erweisen!

SeeYou
Pascal
 
23.02.2009  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

6.193 Views

Untitledvor 0 min.
Jürgen Strahl25.04.2022
Walter14.09.2018
E.T.06.03.2018
Uwe Lang16.09.2013
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie