Source/ Codesnippets | | | | | Nachtrag: Aktueller et besser ist cet Methode: [...]
Flimmerfreie Fensterskalierung avec Anpassung qui daraufliegenden Elemente...
wohl un Problem welches presque alle XProfaner avons. si on sich qui fertigen Programme ansieht stellt on toujours wieder fest - cela pas umsonst à skalierbaren la fenêtre gespart wird.
qui gemeine Profaner wird plus ou bien moins en supplément bewegt un pas-skalierbares la fenêtre trop erstellen - wobei es là chez qui Erstellung aussi erhebliche Qualitätsunterschiede gibt. toujours wieder lieu je fest, qui la fenêtre avec einer statischen Taille erstellt volonté, wobei pas beachtet wird cela qui intérieur-Bereich je pour Windowseinstellung dans qui Taille abweichen peux. ca ist mais un d'autre Thema.
ici eh bien mon Vorschlag: un la fenêtre (dlg) welches sich flimmerfrei skalieren peut - et qui daraufliegenden Elemente sich automatisch (et tout de suite) qui neuen Taille anpassen. KompilierenMarqueSéparation {$cleq}
seterrorlevel 0
$U thread.pcu = thread.
declare dlg&,dir&,stat&,_dlgw&,_dlgh&,_odlgw&,_odlgh&
decimals 0
dlg&:=createwindow (%desktop,app ,100,100,640,480)
dir&:=createsortedlistbox(dlg&,,0,0,0,0)
stat&:=create(statuswindow,dlg&,Bereit.)
thread.start 1
whilenot (%key==2)
waitinput
wend
thread.stop 1
end
proc thread.do
parameters n&
if n&==1
_dlgw&:=width(dlg&);_dlgh&:=height(dlg&)
if ( ( _odlgw&<>_dlgw& ) or ( _odlgh&<>_dlgh& ) )
_odlgw&:=_dlgw&;_odlgh&:=_dlgh&
_redrw
endif
endif
endproc
proc _redrw
setwindowpos dir&=0,0 - width(dlg&),(height(dlg&)-height(stat&));0
setwindowpos stat&=0,0 - 0,0;0
endproc
Salve, iF |
| | | | |
| | | la fois ne neuere Version avec Popupmenu-Unterstützung. KompilierenMarqueSéparation {$cleq}
seterrorlevel 0
$U thread.pcu = thread.
declare dlg&,dir&,stat&,_dlgw&,_dlgh&,_odlgw&,_odlgh&,hMenu&,hwin&
app.init
whilenot (%key==2)
waitinput
if (menuitem(100))
sendmessage(%hwnd,$10,0,0)
setmenuitem 0
elseif (menuitem(998))
enablewindow %hwnd,0
messagebox About,About,4096
enablewindow %hwnd,1
setmenuitem 0
elseif (menuitem(999))
enablewindow %hwnd,0
messagebox Info,Info,4096
enablewindow %hwnd,1
setmenuitem 0
endif
wend
app.kill
end
/* FUNCTIONS */
proc thread.do
parameters n&
if (n&==1)
_dlgw&:=width(dlg&);_dlgh&:=height(dlg&)
if ( ( _odlgw&<>_dlgw& ) or ( _odlgh&<>_dlgh& ) )
_odlgw&:=_dlgw&;_odlgh&:=_dlgh&
_redrw
endif
elseif (n&==2)
insertstring(hwin&,0,time$(0)+.+substr$(time$(1),1,.))
endif
endproc
proc _redrw
setwindowpos %hwnd=0,0 - width(dlg&),%CYMenu;0
setwindowpos hwin&=0,%CYMenu - width(dlg&),(height(dlg&)-height(stat&)-%CYMenu);0
setwindowpos stat&=0,0 - 0,0;0
endproc
proc app.init
proc createpmenu
windowtitle app
windowstyle 80
window 0,0-0,0
showwindow(%Hwnd,0)
popup Programm
appendmenu 100,&Beenden
popup &?
appendmenu 998,&About
Separator
appendmenu 999,&Help
external(USER32,SetParent,%hwnd,dlg&)
endproc
decimals 0
dlg&:=createwindow (%desktop,app ,100,100,640,480)
hwin&:=createlistbox(dlg&,,0,0,0,0)
stat&:=create(statuswindow,dlg&,Bereit.)
createpmenu
thread.start 1
thread.start 2,7
endproc
proc app.kill
thread.stop 2
thread.stop class=s2>1
endproc
peut-être schaffts oui quelqu'un qui PopupMenuunterstützung eleganter einzubetten.
Salve, iF |
| | | | |
| | | cela ganze la fois um facteur Toolbar erweitert: KompilierenMarqueSéparation {$cleq}
seterrorlevel 0
$U thread.pcu = thread.
declare dlg&,dir&,stat&,_dlgw&,_dlgh&,_odlgw&,_odlgh&,hMenu&,hwin&,ftps&,ftpp&,ftpm&,_topspc&,hToolbar&,tdlg&
declare fnt1&
app.init
whilenot (%key==2)
waitinput
if (menuitem(100))
sendmessage(%hwnd,$10,0,0)
setmenuitem 0
elseif (menuitem(998))
enablewindow %hwnd,0
messagebox About,About,4096
enablewindow %hwnd,1
setmenuitem 0
elseif (menuitem(999))
enablewindow %hwnd,0
messagebox Info,Info,4096
enablewindow %hwnd,1
setmenuitem 0
elseif (menuitem(2001))
enablewindow %hwnd,0
messagebox Info,Info,4096
enablewindow %hwnd,1
setmenuitem 0
endif
wend
app.kill
end
/* FUNCTIONS */
proc thread.do
parameters n&
if (n&==1)
_dlgw&:=width(dlg&);_dlgh&:=height(dlg&)
if ( ( _odlgw&<>_dlgw& ) or ( _odlgh&<>_dlgh& ) )
_odlgw&:=_dlgw&;_odlgh&:=_dlgh&
_redrw
endif
elseif (n&==2)
insertstring(hwin&,0,time$(0)+.+substr$(time$(1),1,.))
endif
endproc
proc _redrw
setwindowpos %hwnd=0,0 - width(dlg&),(%CYMenu);0
_topspc&:=%winbottom-%wintop+48
setwindowpos tdlg&=0,%CYMenu - %maxx,48;0
setwindowpos htoolbar&=0,0 - width(tdlg&),height(tdlg&);0
if ( (height(dlg&)>150) and (width(dlg&)>150) )
setwindowpos ftpm&=(width(dlg&)-65),((height(dlg&)-height(stat&))-23) - 65,23;0
setwindowpos ftpp&=(width(dlg&)-130),((height(dlg&)-height(stat&))-23) - 65,23;0
else
setwindowpos ftpm&=0,0 - 0,0;0
setwindowpos ftpp&=0,0 - 0,0;0
endif
if (width(dlg&)>150)
setwindowpos ftps&=(width(dlg&)-130),_topspc& - 130,((height(dlg&)-height(stat&)-_topspc&)-height(ftpm&));0
setwindowpos hwin&=0,_topspc& - (width(dlg&)-130),(height(dlg&)-height(stat&)-_topspc&);0
else
setwindowpos ftps&=0,0-0,0;0
setwindowpos hwin&=0,_topspc& - (width(dlg&)),(height(dlg&)-height(stat&)-_topspc&);0
endif
setwindowpos stat&=0,0 - 0,0;0
showwindow (ftpm&,0)
showwindow (ftpp&,0)
showwindow (ftpm&,1)
showwindow (ftpp&,1)
endproc
proc app.init
proc createsubs
proc createpopupmenu
popup Programm
appendmenu 100,&Beenden
popup &?
appendmenu 998,&About
Separator
appendmenu 999,&Help
endproc
proc createtoolbar
hToolbar& = create(TOOLBAR,tdlg&,0,0,0,2000,-1)
Toolbar(separator,hToolBar&)
Toolbar(AddTextButton,hToolBar&,0,2001,Knopf 1,)
Toolbar(AddTextButton,hToolBar&,0,2002,Knopf 2,)
Toolbar(AddTextButton,hToolBar&,0,2003,Knopf 3,)
Toolbar(AddTextButton,hToolBar&,0,2004,Knopf 4,)
Toolbar(AddTextButton,hToolBar&,0,2005,Knopf 5,)
endproc
windowtitle app
windowstyle 80
window 0,0-0,0
createpopupmenu
createtoolbar
external(USER32,SetParent,%hwnd,dlg&)
endproc
decimals 0
fnt1&:=createfont(MS Sans Serif,10,0,0,0,0)
dlg&:=createwindow (%desktop,app ,100,100,640,480)
hwin&:=createlistbox(dlg&,,0,0,0,0)
ftps&:=createlistbox(dlg&,,0,0,0,0)
ftpp&:=createbutton(dlg&,Hinzufügen,0,0,0,0)
ftpm&:=createbutton(dlg&,Bearbeiten,0,0,0,0)
windowstyle 80
tdlg&:=createwindow(dlg&,,0,0,0,0)
external(USER32,SetParent,tdlg&,dlg&)
stat&:=create(statuswindow,dlg&,Bereit.)
setfont hwin&,fnt1&
setfont ftps&,fnt1&
setfont ftpp&,fnt1&
setfont ftpm&,fnt1&
createsubs
thread.start 1
thread.start 2,7
endproc
proc app.kill
thread.stop 2
thread.stop 1
lass=s4 href='./../../funktionsreferenzen/XProfan/deleteobject/'>deleteobject fnt1&
endproc
|
| | | | |
|
Zum QuelltextOptions du sujet | 4.744 Views |
Themeninformationencet Thema hat 1 participant: |