Forum | | | | E.T. | allô XProfaner-Gemeinde, je nutze gern qui Icon-Buttons avec le texte,
comment im Code unten dargestellt. Bisher J'ai eu avec cela aucun Probleme, là je qui Icon's aus einer Dll geladen hab. chez einem kleinem Mini-projet, welches sans Dll auskommen sollte, c'est moi maintenant folgendes aufgefallen: Im Interpreter funktioniert cela entier wunderbar, starte je mais qui fertige Exe, ist cela Icon sur dem Button seulement sporadisch, meist seulement beim ersten Programmstart, trop voyons.
quelqu'un 'ne concept ??? Passiert incidemment im Beispiel ici: [...] aussi. Getestet avec XProfan 11/12/X2 KompilierenMarqueSéparation
SubProc Create.BigPicButton
Parameters Ziel&, Text$, PosX%, PosY%, Breite%, Hoehe%, Icon&
var BigPicButton& = @control("Button",Text$,$50012200+$2000000,PosX%,PosY%,Breite%,Hoehe%,Ziel&,1000,%Hinstance)
Button_Refresh BigPicButton&, Icon&
Return BigPicButton&
EndProc
Proc Button_Refresh
Parameters Button&, Icon&
var Refresh_Button&=@control("Static","",$50000003,12,12,32,32,Button&,0,%Hinstance)
@Sendmessage(Refresh_Button&,$170,Icon& ,0)
EndProc
Declare BtnIcon&, Button&
BtnIcon& = @Create("hIcon","Baum")
CLS
Button& = @Create("BigPicButton",%HWnd,"Test- \nButton ",20,20,150,60,BtnIcon&)
waitinput
DeleteObject BtnIcon&
end
|
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 08.05.2011 ▲ |
| |
| | Dieter Zornow | exposition dir la fois den Code à qui allez, ist aussi kommentiert pourquoi. chez dir fehlt quoi. KompilierenMarqueSéparation'Autor Dieter Zornow
DEF LoadImage(6) !"USER32","LoadImageA"
Def DestroyIcon(1) ! "User32","DestroyIcon"
Declare icon&[]
Var himh& = 0
proc destroyobject
whileloop 0,sizeof(icon&[])-1
DestroyIcon(icon&[&loop])
endwhile
endproc
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&,hpos&,hwid&
Icon&[himh&] = 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&,%hinstance,$0100)
elseif dct$ = upper$("L")
button& = Control("BUTTON",text$,$54010100,x%,y%,w%,h%,hwnd&,id&,%hinstance,$0100)
elseif dct$ = upper$("C")
button& = Control("BUTTON",text$,$54010000,x%,y%,w%,h%,hwnd&,id&,%hinstance,$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&,25,20,button&,0,%Hinstance)
endif
Sendmessage(st&,$170,Icon&[himh&],0)
inc himh&
showbutton(st&)
return str$(button&) + "|" + str$(st&)
endproc
'Beispiel
cls
declare ende%,but$,but1&,static1&, but2&,static2&,but3&,static3&
ende% = 0
but$ = create("ITextbutton",%hwnd,"Test ",%hinstance,"A", 10,25,70,25,10,"R")
but1& = val(substr$(but$,1,"|"))
static1& = val(substr$(but$,2,"|"))
but$ = create("ITextbutton",%hwnd," Test",%hinstance,"Sand", 10,60,60,25,11,"L")
but2& = val(substr$(but$,1,"|"))
static2& = val(substr$(but$,2,"|"))
but$ = create("ITextbutton",%hwnd,"Test",%hinstance,"Wasser", 10,90,80,25,12,"C")'zentriert müssen die Buttons größer werden
but3& = val(substr$(but$,1,"|"))
static3& = val(substr$(but$,2,"|"))
usermessages 16
whilenot ende%
waitinput
case %UMessage = 16:ende% = 1
if clicked(but1&)
Messagebox("Hier1","",0)
showbutton(static1&)'nach jeder Aktion aufrufen sonst verschwindet das Icon
elseif clicked(but2&)
Messagebox("Hier2","",0)
showbutton(static2&)
elseif clicked(but3&)
Messagebox("Hier3","",0)
showbutton(static3&)
endif
endwhile
destroyobject2>()
end
|
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 08.05.2011 ▲ |
| |
| | Jörg Sellmeyer | Na - là serait je mais dire, c'est bien sûr un Bug et sollte pas solcher Workarounds bedürfen... |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08.05.2011 ▲ |
| |
| | Andreas Miethe
| Jörg Sellmeyer (08.05.11)
Na - là serait je mais dire, c'est bien sûr un Bug et sollte pas solcher Workarounds bedürfen...
cela halte je pas pour une Bug. qui un Contrôle dans einem Contrôle erzeugt, cela pas pour vorgesehen ist, qui muss sich eigentlich pas wundern, si un WM_PAINT là pas ankommt. égal, si cela Icon aus einer Dll ou bien aus qui Exe venez, cela wird manquer.
Abhilfe schafft, Autopaint au cours de qui Erzeugung sur NULL, et après wieder sur Standard trop mettons, ou bien den Button so trop versorgen comment il es erwartet, avec einem Bitmap,Icon ou bien Text. |
| | | 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 : [...] | 14.05.2011 ▲ |
| |
| | | vois je genauso. cela Programme ist pour cela Neuzeichnen seiner Controls zuständig. Windows sagt seulement Bescheid, quand oui c'est ca cela stattfinden sollte. cela wird im Code mais weder abgefragt, encore puis reagiert. |
| | | | |
|
répondreOptions du sujet | 5.962 Views |
Themeninformationencet Thema hat 5 participant: |