Deutsch
SKControl.DLL

SKCtrl_CreateHvrImageButtonEx

 

Manfred
Barei
Hallo Sebastian,

hast Du mal für diesen befehl ein kurzes Beispiel, komme damit nicht kanz glar.
SKCtrl_CreateHvrImageButtonEx(hwnd, img, s, ico, hndl, offx, offy, w, h, x, y, sx, sy, hInst)

Grus
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
11.11.2007  
 




Sebastian
König
Hallo Manfred,

die Funktion kannst Du dazu benutzen, um nur einen bestimmten Teil einer Bitmap (Position offx,offy, Größe w * h) als Grafik zu benutzen. Zum Beispiel verwendet
KompilierenMarkierenSeparieren
SKCtrl_CreateHvrImageButtonEx(%hwnd,multi.bmp,Test,0,0,32,0,32,32,200,510,150,50,%hInstance)

das Feld Nummer 2 aus der Datei im Anhang.

HTH

Sebastian

13 kB
Hochgeladen:12.11.2007
Ladeanzahl121
Herunterladen
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
12.11.2007  
 




Manfred
Barei
Hallo Sebastian,

mmmm, das ist nicht was ich brauch.
Wie kann ich mit diser Funktion einen Button mit einer BMP aus einer DLL belegen.

string string#,0=SKHVRIMAGEBUTTON
string skimage#,0 =EROGRAMMEXPROFAN10LIBSKBILD2.BMP
SKHVRIMAGEBUTTON1&=SKCTRL_CREATEHVRIMAGEBUTTON(%HWND,skimage#,string#,0,0,0172,0246,0150,0030,%hInstance)


Grus
Manfred
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
18.11.2007  
 




Sebastian
König
Hallo Manfred,

um ein Bild aus einer DLL zu benutzen, musst Du Dir zunächst ein Handle darauf besorgen. Ab XProfan 9 (oder 10, bin mir gerade nicht sicher) geht das einfach mit Create(hPic,...) - bei älteren Versionen musst Du die API LoadImage() benutzen (dafür gibt es sicherlich hier in der Community einige Beispiele).

Das Handle wird dann einfach an Stelle des Dateinamens (in Deinem Beispiel skimage#) übergeben. Außerdem muss der fünfte Parameter von SKCtrl_CreateHvrImageButton() auf 1 gesetzt werden um anzuzeigen, dass es sich bei der Grafik um ein Handle handelt.

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
19.11.2007  
 




Manfred
Barei
Hallo Sebastian,

bekomme es einfach nicht hin
Was mache ich falsch?
Hier ein kurzes beispiel wie ich es machen wollte,
KompilierenMarkierenSeparieren
 $P+
SET(ERRORLEVEL,0)
DEF GETSYSCOLOR(1) !USER32,GetSysColor
DEF GETWINDOW(2) !USER32,GetWindow
DECLARE SKCONTROL&,STRING#,SKIMAGE#,SKIMAGE2#,SKIMAGE3#,FONT&
DECLARE GW_CHILD&
Declare DemoDll&,DLLPic&
GW_CHILD& = 5
 $I E:PROGRAMMEXPROFAN10LIBSKCONTROL.INC (Für SKCONTROL.DLL)
DemoDll&=@USEDLL(DEMO.DLL)
SKCONTROL&=USEDLL(E:PROGRAMMEXPROFAN10LIBSKCONTROL.DLL)
SKCTRL_INITDLL()
DIM STRING#,500
DIM SKIMAGE#,500
DIM SKIMAGE2#,500
DIM SKIMAGE3#,500
FONT&=CREATE(FONT,MS SANS SERIF,13,0,0,0,0)
DECLARE SKCLRHVRIMAGEBUTTON1&
DECLARE BUTTON1&
WINDOWSTYLE 63
WINDOWTITLE BMP aus DLL
WINDOW 604,302-279,189
SET(TRUECOLOR,1)
DECLARE ENDE%
CLS GETSYSCOLOR(15)
USEFONT MS Sans Serif,13,0,0,0,0
SETDIALOGFONT 1
Hier kann ggf. Ihr Menü hin
DLLPic&=@Create(hPic,DemoDll&,UNFALL1)
string string#,0=
string skimage#,0 =DLLPic&
SKCLRHVRIMAGEBUTTON1&=SKCTRL_CREATECLRHVRIMAGEBUTTON(%HWND,skimage#,string#,0,1,RGB(0,255,255),RGB(0,64,128),0052,0045,0033,0033,%hInstance)
SETFONT SKCLRHVRIMAGEBUTTON1&,FONT&
SKCTRL_SETCOLOR(SKCLRHVRIMAGEBUTTON1&,1,RGB(0,0,160))
SKCTRL_SETCOLOR(SKCLRHVRIMAGEBUTTON1&,2,GETSYSCOLOR(15))
BUTTON1& = CREATE(BUTTON,%HWND,Ende,0095,0110,0070,0030)
SETFOCUS(%HWND)
REPAINT

WHILENOT ENDE%

    WAITINPUT

    If %KEY=2

        ENDE%= 1

    ELSEIF %KEY=4

    ELSEIF GETFOCUS(SKCLRHVRIMAGEBUTTON1&) SKCLRHVRIMAGEBUTTON

    ELSEIF GETFOCUS(BUTTON1&) BUTTON

        ENDE%= 1

    ENDIF

ENDWHILE

DISPOSE STRING#
DISPOSE SKIMAGE#
DISPOSE SKIMAGE2#
DISPOSE SKIMAGE3#
SKCTRL_DEINITDLL()
FREEDLL SKCONTROL&
FREEDLL DemoDll&
DELETEOBJECT DLLPic&
DELETEOBJECT FONT&

Die DLL hänge ich dem Beitrag an.

grus
Manfred

10 kB
Hochgeladen:01.12.2007
Ladeanzahl140
Herunterladen
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
01.12.2007  
 



@Manfred
Ich mache es immer mit diesem Code
KompilierenMarkierenSeparieren
DEF LoadImage(6) ! USER32,LoadImageA
DECLARE eigen_dll&
eigen_dll&=UseDLL(shell32.dll) Kann jede DLL benutzt werden
------------------------------------------------------------------------

proc showbutton damit das Icon auch immer wieder angezeigt wird, ohne diese Proc wird es in der Exe nicht mehr angezeigt

    parameters hdl&  handle des Static controls
    showwindow(hdl&,0)
    showwindow(hdl&,1)

endproc

Parameter: Fenster, oder Dialoghandle, Buttontext, handle der iconresource, Iconname, x%,y%,w%,h%, ButtonID, Text Links, rechts oder Zentiert

subproc Create.ITextbutton

    Parameters hwnd&,text$,source&,image$,x%,y%,w%,h%,id&,dct$
    declare button&,st&,Imh&,hpos&,hwid&
    Imh& = LoadImage(source&,addr(Image$),$1,20,20,$0) Icongröße = 20 x 20

    if dct$ = upper$(R)

        button& = Control(BUTTON,text$,$54010200,x%,y%,w%,h%,hwnd&,id&,eigen_dll&,$0100)

    elseif dct$ = upper$(L)

        button& = Control(BUTTON,text$,$54010100,x%,y%,w%,h%,hwnd&,id&,eigen_dll&,$0100)

    elseif dct$ = upper$(C)

        button& = Control(BUTTON,text$,$54010000,x%,y%,w%,h%,hwnd&,id&,eigen_dll&,$0100)

    endif

    hpos& = height(button&) - 20
    hpos& = int(hpos&/2)
    hwid& = width(button&) -23  3 pixel vom Rand weg + Icongröße

    if (dct$ = upper$(R)) or (dct$ = upper$(C))

        st& = control(Static,,$50000003,3,hpos&,20,20,button&,0,%Hinstance)

    else

        st& = control(Static,,$50000003,hwid&,hpos&,20,20,button&,0,%Hinstance)

    endif

    Sendmessage(st&,$170,Imh&,0)
    showbutton(st&)
    return str$(button&) + | + str$(st&)

endproc

############################################################
DECLARE hlp$,hlp%,tip%,font0%
Jeder Button braucht zwei Variablen  -  eine String- und eine Integer-Variable
DECLARE win1&,but1$,but1%
font0%=CREATE(FONT,ARIAL,16,6,0,0,0)
CLS
--------------------------------------------------------------------
hlp$ =  create(ITextbutton,%hwnd,F1 Hilfe ,eigen_dll&,#24, 5,3,80,25,10,R)
Vorletzter Parameter ID-Nr(für jeden Button ändern) - Letzter Parameter R=rechts, L=links,C=mittig
hlp% = val(substr$(hlp$,1,|))
SetFont hlp%,font0%
tip%=CREATE(TOOLTIP,%HWnd,hlp%, Den Hilfetext anzeigen...)
---------------------------------------------------------------------
win1&=CREATE(DIALOG,%HWnd,Dialog,50,150,200,200) das geht auch auf Dialog-Fenstern
but1$ =  create(ITextbutton,win1&,&Laden ,eigen_dll&,#5, 5,3,80,25,20,R) ID-Nr ändern
but1% = val(substr$(but1$,1,|))
SetFont but1%,font0%
tip%=CREATE(TOOLTIP,%HWnd,but1%, Datei laden...)
---------------------------------------------------------------------
WAITINPUT
END

Viel Erfolg !
 
01.12.2007  
 




Sebastian
König
Manfred Barei
bekomme es einfach nicht hin
Was mache ich falsch?
Hier ein kurzes beispiel wie ich es machen wollte,
(...)


Der Fehler liegt in den folgenden Zeilen:
KompilierenMarkierenSeparieren
string skimage#,0 =DLLPic&
SKCLRHVRIMAGEBUTTON1&=SKCTRL_CREATECLRHVRIMAGEBUTTON(%HWND,skimage#,string#,0,1,RGB(0,255,255),RGB(0,64,128),0052,0045,0033,0033,%hInstance)

Wenn statt eines Dateinamens ein Handle benutzt werden soll, so ist dieses nicht in die Bereichsvariable zu schreiben, sondern direkt zu übergeben. Richtig wäre demnach dieser Aufruf:
KompilierenMarkierenSeparieren
SKCLRHVRIMAGEBUTTON1&=SKCTRL_CREATECLRHVRIMAGEBUTTON(%HWND,DLLPic&,string#,0,1,RGB(0,255,255),RGB(0,64,128),0052,0045,0033,0033,%hInstance)

HTH

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
02.12.2007  
 




Manfred
Barei
Hallo,

was hab ich nicht schon alles probiert, aber dass nicht.

Danke, jetzt funzt es.

Grus
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
05.12.2007  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.701 Betrachtungen

Unbenanntvor 0 min.
Walter14.10.2018
iF15.09.2014
Ernst03.06.2013
ThPeichert26.11.2012
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie